Merge pull request #2004 from ilya-lavrenov:tapi_umat_copyto
This commit is contained in:
commit
388d0ef182
@ -134,11 +134,11 @@ void MatAllocator::copy(UMatData* usrc, UMatData* udst, int dims, const size_t s
|
|||||||
{
|
{
|
||||||
CV_Assert( sz[i] <= (size_t)INT_MAX );
|
CV_Assert( sz[i] <= (size_t)INT_MAX );
|
||||||
if( sz[i] == 0 )
|
if( sz[i] == 0 )
|
||||||
return;
|
return;
|
||||||
if( srcofs )
|
if( srcofs )
|
||||||
srcptr += srcofs[i]*(i <= dims-2 ? srcstep[i] : 1);
|
srcptr += srcofs[i]*(i <= dims-2 ? srcstep[i] : 1);
|
||||||
if( dstofs )
|
if( dstofs )
|
||||||
dstptr += dstofs[i]*(i <= dims-2 ? dststep[i] : 1);
|
dstptr += dstofs[i]*(i <= dims-2 ? dststep[i] : 1);
|
||||||
isz[i] = (int)sz[i];
|
isz[i] = (int)sz[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -643,11 +643,10 @@ void UMat::copyTo(OutputArray _dst) const
|
|||||||
if( _dst.kind() == _InputArray::UMAT )
|
if( _dst.kind() == _InputArray::UMAT )
|
||||||
{
|
{
|
||||||
UMat dst = _dst.getUMat();
|
UMat dst = _dst.getUMat();
|
||||||
void* srchandle = handle(ACCESS_READ);
|
if( u == dst.u && dst.offset == offset )
|
||||||
void* dsthandle = dst.handle(ACCESS_WRITE);
|
|
||||||
if( srchandle == dsthandle && dst.offset == offset )
|
|
||||||
return;
|
return;
|
||||||
dst.ndoffset(dstofs);
|
dst.ndoffset(dstofs);
|
||||||
|
dstofs[dims-1] *= esz;
|
||||||
CV_Assert(u->currAllocator == dst.u->currAllocator);
|
CV_Assert(u->currAllocator == dst.u->currAllocator);
|
||||||
u->currAllocator->copy(u, dst.u, dims, sz, srcofs, step.p, dstofs, dst.step.p, false);
|
u->currAllocator->copy(u, dst.u, dims, sz, srcofs, step.p, dstofs, dst.step.p, false);
|
||||||
}
|
}
|
||||||
|
@ -103,9 +103,27 @@ OCL_TEST_P(ConvertTo, Accuracy)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef MatrixTestBase CopyTo;
|
||||||
|
|
||||||
|
OCL_TEST_P(CopyTo, Accuracy)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < test_loop_times; j++)
|
||||||
|
{
|
||||||
|
generateTestData();
|
||||||
|
|
||||||
|
OCL_OFF(src_roi.copyTo(dst_roi));
|
||||||
|
OCL_ON(usrc_roi.copyTo(udst_roi));
|
||||||
|
|
||||||
|
OCL_EXPECT_MATS_NEAR(dst, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
OCL_INSTANTIATE_TEST_CASE_P(MatrixOperation, ConvertTo, Combine(
|
OCL_INSTANTIATE_TEST_CASE_P(MatrixOperation, ConvertTo, Combine(
|
||||||
OCL_ALL_DEPTHS, OCL_ALL_DEPTHS, OCL_ALL_CHANNELS, Bool()));
|
OCL_ALL_DEPTHS, OCL_ALL_DEPTHS, OCL_ALL_CHANNELS, Bool()));
|
||||||
|
|
||||||
|
OCL_INSTANTIATE_TEST_CASE_P(MatrixOperation, CopyTo, Combine(
|
||||||
|
OCL_ALL_DEPTHS, Values((MatDepth)0), OCL_ALL_CHANNELS, Bool()));
|
||||||
|
|
||||||
} } // namespace cvtest::ocl
|
} } // namespace cvtest::ocl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user