use NPP version for Fermi
This commit is contained in:
parent
a28cb99e88
commit
55cb26551f
modules/gpu/src
@ -120,7 +120,7 @@ namespace hist
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__global__ void histEven8u(const uchar* src, const size_t step, const int rows, const int cols,
|
__global__ void histEven8u(const uchar* src, const size_t step, const int rows, const int cols,
|
||||||
int* hist, const int binCount, const int binSize, const int lowerLevel, const int upperLevel)
|
int* hist, const int binCount, const int binSize, const int lowerLevel, const int upperLevel)
|
||||||
{
|
{
|
||||||
extern __shared__ int shist[];
|
extern __shared__ int shist[];
|
||||||
|
@ -896,7 +896,7 @@ namespace hist
|
|||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
void histEven8u(const GpuMat& src, GpuMat& hist, GpuMat&, int histSize, int lowerLevel, int upperLevel, cudaStream_t stream)
|
void histEven8u(const GpuMat& src, GpuMat& hist, int histSize, int lowerLevel, int upperLevel, cudaStream_t stream)
|
||||||
{
|
{
|
||||||
hist.create(1, histSize, CV_32S);
|
hist.create(1, histSize, CV_32S);
|
||||||
cudaSafeCall( cudaMemsetAsync(hist.data, 0, histSize * sizeof(int), stream) );
|
cudaSafeCall( cudaMemsetAsync(hist.data, 0, histSize * sizeof(int), stream) );
|
||||||
@ -911,12 +911,18 @@ void cv::gpu::histEven(const GpuMat& src, GpuMat& hist, GpuMat& buf, int histSiz
|
|||||||
typedef void (*hist_t)(const GpuMat& src, GpuMat& hist, GpuMat& buf, int levels, int lowerLevel, int upperLevel, cudaStream_t stream);
|
typedef void (*hist_t)(const GpuMat& src, GpuMat& hist, GpuMat& buf, int levels, int lowerLevel, int upperLevel, cudaStream_t stream);
|
||||||
static const hist_t hist_callers[] =
|
static const hist_t hist_callers[] =
|
||||||
{
|
{
|
||||||
histEven8u,
|
NppHistogramEvenC1<CV_8U , nppiHistogramEven_8u_C1R , nppiHistogramEvenGetBufferSize_8u_C1R >::hist,
|
||||||
0,
|
0,
|
||||||
NppHistogramEvenC1<CV_16U, nppiHistogramEven_16u_C1R, nppiHistogramEvenGetBufferSize_16u_C1R>::hist,
|
NppHistogramEvenC1<CV_16U, nppiHistogramEven_16u_C1R, nppiHistogramEvenGetBufferSize_16u_C1R>::hist,
|
||||||
NppHistogramEvenC1<CV_16S, nppiHistogramEven_16s_C1R, nppiHistogramEvenGetBufferSize_16s_C1R>::hist
|
NppHistogramEvenC1<CV_16S, nppiHistogramEven_16s_C1R, nppiHistogramEvenGetBufferSize_16s_C1R>::hist
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (src.depth() == CV_8U && deviceSupports(FEATURE_SET_COMPUTE_30))
|
||||||
|
{
|
||||||
|
histEven8u(src, hist, histSize, lowerLevel, upperLevel, StreamAccessor::getStream(stream));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
hist_callers[src.depth()](src, hist, buf, histSize, lowerLevel, upperLevel, StreamAccessor::getStream(stream));
|
hist_callers[src.depth()](src, hist, buf, histSize, lowerLevel, upperLevel, StreamAccessor::getStream(stream));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user