diff --git a/doc/gpu_initialization.tex b/doc/gpu_initialization.tex index cf1d3085e8..e8a6ffff93 100644 --- a/doc/gpu_initialization.tex +++ b/doc/gpu_initialization.tex @@ -22,11 +22,11 @@ Returns the current device index, which was set by {gpu::getDevice} or initializ \cvdefCpp{int getDevice();} -\cvclass{gpu::GpuFeature}\label{cpp.gpu.GpuFeature} +\cvclass{gpu::FeatureSet}\label{cpp.gpu.FeatureSet} GPU compute features. \begin{lstlisting} -enum GpuFeature +enum FeatureSet { FEATURE_SET_COMPUTE_10, FEATURE_SET_COMPUTE_11, FEATURE_SET_COMPUTE_12, FEATURE_SET_COMPUTE_13, @@ -56,7 +56,7 @@ public: size_t freeMemory() const; size_t totalMemory() const; - bool supports(GpuFeature feature) const; + bool supports(FeatureSet feature_set) const; bool isCompatible() const; }; \end{lstlisting} @@ -111,9 +111,9 @@ Returns the amount of total memory in bytes. \cvCppFunc{gpu::DeviceInfo::supports} Returns true if the device has the given GPU feature, otherwise false. -\cvdefCpp{bool DeviceInfo::supports(GpuFeature feature);} +\cvdefCpp{bool DeviceInfo::supports(FeatureSet feature\_set);} \begin{description} -\cvarg{feature}{Feature to be checked. See \hyperref[cpp.gpu.GpuFeature]{cv::gpu::GpuFeature}.} +\cvarg{feature}{Feature to be checked. See \hyperref[cpp.gpu.FeatureSet]{cv::gpu::FeatureSet}.} \end{description} @@ -129,9 +129,9 @@ This class provides functionality (as set of static methods) for checking which \bigskip The following method checks whether the module was built with the support of the given feature: -\cvdefCpp{static bool builtWith(GpuFeature feature);} +\cvdefCpp{static bool builtWith(FeatureSet feature\_set);} \begin{description} -\cvarg{feature}{Feature to be checked. See \hyperref[cpp.gpu.GpuFeature]{cv::gpu::GpuFeature}.} +\cvarg{feature}{Feature to be checked. See \hyperref[cpp.gpu.FeatureSet]{cv::gpu::FeatureSet}.} \end{description} There are a set of methods for checking whether the module contains intermediate (PTX) or binary GPU code for the given architecture(s): diff --git a/doc/opencv.pdf b/doc/opencv.pdf index c271841663..847080308b 100644 Binary files a/doc/opencv.pdf and b/doc/opencv.pdf differ diff --git a/modules/gpu/include/opencv2/gpu/gpu.hpp b/modules/gpu/include/opencv2/gpu/gpu.hpp index 029c029cdf..a401885272 100644 --- a/modules/gpu/include/opencv2/gpu/gpu.hpp +++ b/modules/gpu/include/opencv2/gpu/gpu.hpp @@ -64,7 +64,7 @@ namespace cv CV_EXPORTS void setDevice(int device); CV_EXPORTS int getDevice(); - enum GpuFeature + enum FeatureSet { FEATURE_SET_COMPUTE_10 = 10, FEATURE_SET_COMPUTE_11 = 11, @@ -81,7 +81,7 @@ namespace cv class CV_EXPORTS TargetArchs { public: - static bool builtWith(GpuFeature feature); + static bool builtWith(FeatureSet feature_set); static bool has(int major, int minor); static bool hasPtx(int major, int minor); static bool hasBin(int major, int minor); @@ -115,7 +115,7 @@ namespace cv size_t totalMemory() const; // Checks whether device supports the given feature - bool supports(GpuFeature feature) const; + bool supports(FeatureSet feature_set) const; // Checks whether the GPU module can be run on the given device bool isCompatible() const; diff --git a/modules/gpu/src/initialization.cpp b/modules/gpu/src/initialization.cpp index 860399ea23..dd56333e8f 100644 --- a/modules/gpu/src/initialization.cpp +++ b/modules/gpu/src/initialization.cpp @@ -48,6 +48,9 @@ using namespace cv::gpu; namespace { + // Compares value to set using the given comparator. Returns true if + // there is at least one element x in the set satisfying to: x cmp value + // predicate. template bool compareToSet(const std::string& set_as_str, int value, Comparer cmp) { @@ -69,9 +72,9 @@ namespace } -CV_EXPORTS bool cv::gpu::TargetArchs::builtWith(cv::gpu::GpuFeature feature) +CV_EXPORTS bool cv::gpu::TargetArchs::builtWith(cv::gpu::FeatureSet feature_set) { - return ::compareToSet(CUDA_ARCH_FEATURES, feature, std::greater_equal()); + return ::compareToSet(CUDA_ARCH_FEATURES, feature_set, std::greater_equal()); } @@ -128,7 +131,7 @@ CV_EXPORTS void cv::gpu::setDevice(int) { throw_nogpu(); } CV_EXPORTS int cv::gpu::getDevice() { throw_nogpu(); return 0; } size_t cv::gpu::DeviceInfo::freeMemory() const { throw_nogpu(); return 0; } size_t cv::gpu::DeviceInfo::totalMemory() const { throw_nogpu(); return 0; } -bool cv::gpu::DeviceInfo::supports(cv::gpu::GpuFeature) const { throw_nogpu(); return false; } +bool cv::gpu::DeviceInfo::supports(cv::gpu::FeatureSet) const { throw_nogpu(); return false; } bool cv::gpu::DeviceInfo::isCompatible() const { throw_nogpu(); return false; } void cv::gpu::DeviceInfo::query() { throw_nogpu(); } void cv::gpu::DeviceInfo::queryMemory(size_t&, size_t&) const { throw_nogpu(); } @@ -173,10 +176,10 @@ size_t cv::gpu::DeviceInfo::totalMemory() const } -bool cv::gpu::DeviceInfo::supports(cv::gpu::GpuFeature feature) const +bool cv::gpu::DeviceInfo::supports(cv::gpu::FeatureSet feature_set) const { int version = majorVersion() * 10 + minorVersion(); - return version >= feature; + return version >= feature_set; }