add fucntion to control tegra optimizations in run-time
This commit is contained in:
parent
f73c6e6147
commit
f8484e3266
@ -269,6 +269,15 @@ typedef enum CvStatus
|
|||||||
}
|
}
|
||||||
CvStatus;
|
CvStatus;
|
||||||
|
|
||||||
|
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||||
|
namespace cv { namespace tegra {
|
||||||
|
|
||||||
|
CV_EXPORTS bool useTegra();
|
||||||
|
CV_EXPORTS void setUseTegra(bool flag);
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//! @endcond
|
//! @endcond
|
||||||
|
|
||||||
#endif // __OPENCV_CORE_PRIVATE_HPP__
|
#endif // __OPENCV_CORE_PRIVATE_HPP__
|
||||||
|
@ -236,6 +236,9 @@ struct CoreTLSData
|
|||||||
{
|
{
|
||||||
CoreTLSData() : device(0), useOpenCL(-1), useIPP(-1), useCollection(false)
|
CoreTLSData() : device(0), useOpenCL(-1), useIPP(-1), useCollection(false)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||||
|
useTegra = -1;
|
||||||
|
#endif
|
||||||
#ifdef CV_COLLECT_IMPL_DATA
|
#ifdef CV_COLLECT_IMPL_DATA
|
||||||
implFlags = 0;
|
implFlags = 0;
|
||||||
#endif
|
#endif
|
||||||
@ -246,6 +249,9 @@ struct CoreTLSData
|
|||||||
ocl::Queue oclQueue;
|
ocl::Queue oclQueue;
|
||||||
int useOpenCL; // 1 - use, 0 - do not use, -1 - auto/not initialized
|
int useOpenCL; // 1 - use, 0 - do not use, -1 - auto/not initialized
|
||||||
int useIPP; // 1 - use, 0 - do not use, -1 - auto/not initialized
|
int useIPP; // 1 - use, 0 - do not use, -1 - auto/not initialized
|
||||||
|
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||||
|
int useTegra; // 1 - use, 0 - do not use, -1 - auto/not initialized
|
||||||
|
#endif
|
||||||
bool useCollection; // enable/disable impl data collection
|
bool useCollection; // enable/disable impl data collection
|
||||||
|
|
||||||
#ifdef CV_COLLECT_IMPL_DATA
|
#ifdef CV_COLLECT_IMPL_DATA
|
||||||
|
@ -1257,6 +1257,36 @@ void setUseIPP(bool flag)
|
|||||||
|
|
||||||
} // namespace ipp
|
} // namespace ipp
|
||||||
|
|
||||||
|
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||||
|
|
||||||
|
namespace tegra {
|
||||||
|
|
||||||
|
bool useTegra()
|
||||||
|
{
|
||||||
|
CoreTLSData* data = getCoreTlsData().get();
|
||||||
|
|
||||||
|
if (data->useTegra < 0)
|
||||||
|
{
|
||||||
|
const char* pTegraEnv = getenv("OPENCV_TEGRA");
|
||||||
|
if (pTegraEnv && (cv::String(pTegraEnv) == "disabled"))
|
||||||
|
data->useTegra = false;
|
||||||
|
else
|
||||||
|
data->useTegra = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (data->useTegra > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setUseTegra(bool flag)
|
||||||
|
{
|
||||||
|
CoreTLSData* data = getCoreTlsData().get();
|
||||||
|
data->useTegra = flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace tegra
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
} // namespace cv
|
} // namespace cv
|
||||||
|
|
||||||
/* End of file. */
|
/* End of file. */
|
||||||
|
Loading…
Reference in New Issue
Block a user