SANITY_CHECK(dst, 5e-2);
}
+///////////// ConvertScaleAbs ////////////////////////
+
+typedef Size_MatType ConvertScaleAbsFixture;
+
+OCL_PERF_TEST_P(ConvertScaleAbsFixture, ConvertScaleAbs,
+ ::testing::Combine(OCL_TEST_SIZES, OCL_TEST_TYPES))
+{
+ const Size_MatType_t params = GetParam();
+ const Size srcSize = get<0>(params);
+ const int type = get<1>(params), cn = CV_MAT_CN(type);
+
+ checkDeviceMaxMemoryAllocSize(srcSize, type);
+
+ UMat src(srcSize, type), dst(srcSize, CV_8UC(cn));
+ declare.in(src, WARMUP_RNG).out(dst);
+
+ OCL_TEST_CYCLE() cv::convertScaleAbs(src, dst, 0.5, 2);
+
+ SANITY_CHECK(dst);
+}
+
+///////////// PatchNaNs ////////////////////////
+
+typedef Size_MatType PatchNaNsFixture;
+
+OCL_PERF_TEST_P(PatchNaNsFixture, PatchNaNs,
+ ::testing::Combine(OCL_TEST_SIZES, OCL_PERF_ENUM(CV_32FC1, CV_32FC4)))
+{
+ const Size_MatType_t params = GetParam();
+ Size srcSize = get<0>(params);
+ const int type = get<1>(params), cn = CV_MAT_CN(type);
+
+ checkDeviceMaxMemoryAllocSize(srcSize, type);
+
+ UMat src(srcSize, type);
+ declare.in(src, WARMUP_RNG).out(src);
+
+ // generating NaNs
+ {
+ Mat src_ = src.getMat(ACCESS_RW);
+ srcSize.width *= cn;
+ for (int y = 0; y < srcSize.height; ++y)
+ {
+ float * const ptr = src_.ptr<float>(y);
+ for (int x = 0; x < srcSize.width; ++x)
+ ptr[x] = (x + y) % 2 == 0 ? std::numeric_limits<float>::quiet_NaN() : ptr[x];
+ }
+ }
+
+ OCL_TEST_CYCLE() cv::patchNaNs(src, 17.7);
+
+ SANITY_CHECK(src);
+}
+
+
+///////////// ScaleAdd ////////////////////////
+
+typedef Size_MatType ScaleAddFixture;
+
+OCL_PERF_TEST_P(ScaleAddFixture, ScaleAdd,
+ ::testing::Combine(OCL_TEST_SIZES, OCL_TEST_TYPES))
+{
+ const Size_MatType_t params = GetParam();
+ const Size srcSize = get<0>(params);
+ const int type = get<1>(params);
+
+ checkDeviceMaxMemoryAllocSize(srcSize, type);
+
+ UMat src1(srcSize, type), src2(srcSize, type), dst(srcSize, type);
+ declare.in(src1, src2, WARMUP_RNG).out(dst);
+
+ OCL_TEST_CYCLE() cv::scaleAdd(src1, 0.6, src2, dst);
+
+ SANITY_CHECK(dst, 1e-6);
+}
+
} } // namespace cvtest::ocl
#endif // HAVE_OPENCL