add fucntion to control tegra optimizations in run-time

pull/3764/head
Vladislav Vinogradov 10 years ago
parent f73c6e6147
commit f8484e3266
  1. 9
      modules/core/include/opencv2/core/private.hpp
  2. 6
      modules/core/src/precomp.hpp
  3. 30
      modules/core/src/system.cpp

@ -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…
Cancel
Save