used cudaMalloc for 1-row or 1-column matrix instead of cudaMallocPitch

pull/974/head
Vladislav Vinogradov 12 years ago
parent 1db4afac6a
commit 0489489322
  1. 12
      modules/core/src/gpu_mat.cpp

@ -678,11 +678,17 @@ void cv::gpu::GpuMat::create(int _rows, int _cols, int _type)
size_t esz = elemSize();
void* devPtr;
cudaSafeCall( cudaMallocPitch(&devPtr, &step, esz * cols, rows) );
// Single row must be continuous
if (rows == 1)
if (rows > 1 && cols > 1)
{
cudaSafeCall( cudaMallocPitch(&devPtr, &step, esz * cols, rows) );
}
else
{
// Single row or single column must be continuous
cudaSafeCall( cudaMalloc(&devPtr, esz * cols * rows) );
step = esz * cols;
}
if (esz * cols == step)
flags |= Mat::CONTINUOUS_FLAG;

Loading…
Cancel
Save