diff --git a/modules/core/include/opencv2/core/gpumat.hpp b/modules/core/include/opencv2/core/gpumat.hpp index d39f0a82d..52a8ba087 100644 --- a/modules/core/include/opencv2/core/gpumat.hpp +++ b/modules/core/include/opencv2/core/gpumat.hpp @@ -143,6 +143,7 @@ namespace cv { namespace gpu int multi_processor_count_; int majorVersion_; int minorVersion_; + size_t sharedMemPerBlock_; }; CV_EXPORTS void printCudaDeviceInfo(int device); diff --git a/modules/core/src/gpumat.cpp b/modules/core/src/gpumat.cpp index 942fb450d..a199381b4 100644 --- a/modules/core/src/gpumat.cpp +++ b/modules/core/src/gpumat.cpp @@ -379,6 +379,8 @@ void cv::gpu::DeviceInfo::query() sharedMemPerBlock_ = prop.sharedMemPerBlock; } +size_t cv::gpu::DeviceInfo::sharedMemPerBlock() const {return sharedMemPerBlock_;} + void cv::gpu::DeviceInfo::queryMemory(size_t& free_memory, size_t& total_memory) const { int prev_device_id = getDevice(); @@ -802,6 +804,13 @@ void cv::gpu::ensureSizeIsEnough(int rows, int cols, int type, GpuMat& m) } } +GpuMat cv::gpu::allocMatFromBuf(int rows, int cols, int type, GpuMat &mat) +{ + if (!mat.empty() && mat.type() == type && mat.rows >= rows && mat.cols >= cols) + return mat(Rect(0, 0, cols, rows)); + return mat = GpuMat(rows, cols, type); +} + namespace { class GpuFuncTable