diff options
author | Sanghoon Lee <sanghoon.lee@arm.com> | 2018-06-29 10:52:57 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:54:10 +0000 |
commit | dec32a9edd4b3c6dc55c60d7436e79af6be58c3d (patch) | |
tree | 0aafd0e56a4482f7a8215a1c9f9592552a27c5c4 /tests/validation/CL | |
parent | 149fdf3cad6b42ed302ebe2b0d614a36b9b4d81c (diff) | |
download | ComputeLibrary-dec32a9edd4b3c6dc55c60d7436e79af6be58c3d.tar.gz |
COMPMID-566: Implement reference and CL/NEON validation for ColorConvert (part 2)
Change-Id: I4371c4b6403f55ea7d7baf39df91a45f45b21d5a
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/137975
Tested-by: Jenkins <bsgcomp@arm.com>
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Diffstat (limited to 'tests/validation/CL')
-rw-r--r-- | tests/validation/CL/ColorConvert.cpp | 182 |
1 files changed, 163 insertions, 19 deletions
diff --git a/tests/validation/CL/ColorConvert.cpp b/tests/validation/CL/ColorConvert.cpp index 6d04511629..c99fa3cee1 100644 --- a/tests/validation/CL/ColorConvert.cpp +++ b/tests/validation/CL/ColorConvert.cpp @@ -40,6 +40,8 @@ namespace validation { namespace { +constexpr AbsoluteTolerance<uint8_t> tolerance_nv(2); + // Input data sets const auto ColorConvertRGBADataset = combine(framework::dataset::make("FormatType", { Format::RGBA8888 }), framework::dataset::make("FormatType", { Format::RGB888 })); @@ -52,30 +54,68 @@ const auto ColorConvertYUVPlanarDataset = combine(framework::dataset::make("Form const auto ColorConvertRGBDataset = combine(framework::dataset::make("FormatType", { Format::RGB888 }), framework::dataset::make("FormatType", { Format::RGBA8888 })); +const auto ColorConvertNVDataset = combine(framework::dataset::make("FormatType", { Format::RGB888, Format::RGBA8888 }), + framework::dataset::make("FormatType", { Format::NV12, Format::IYUV, Format::YUV444 })); + +const auto ColorConvertYUYVtoNVDataset = combine(framework::dataset::make("FormatType", { Format::UYVY422, Format::YUYV422 }), + framework::dataset::make("FormatType", { Format::NV12, Format::IYUV })); + +const auto ColorConvertNVtoYUVDataset = combine(framework::dataset::make("FormatType", { Format::NV12, Format::NV21 }), + framework::dataset::make("FormatType", { Format::IYUV, Format::YUV444 })); + inline void validate_configuration(const TensorShape &shape, Format src_format, Format dst_format) { const unsigned int src_num_planes = num_planes_from_format(src_format); + const unsigned int dst_num_planes = num_planes_from_format(dst_format); - const TensorShape dst_shape = adjust_odd_shape(shape, src_format); + TensorShape input = adjust_odd_shape(shape, src_format); + input = adjust_odd_shape(input, src_format); // Create tensors - CLMultiImage ref_src = create_multi_image<CLMultiImage>(shape, src_format); - CLTensor dst = create_tensor<CLTensor>(dst_shape, dst_format); + CLMultiImage ref_src = create_multi_image<CLMultiImage>(input, src_format); + CLMultiImage ref_dst = create_multi_image<CLMultiImage>(input, dst_format); // Create and Configure function CLColorConvert color_convert; if(1U == src_num_planes) { - const CLTensor *plane_src = ref_src.cl_plane(0); + const CLTensor *src_plane = ref_src.cl_plane(0); - color_convert.configure(plane_src, &dst); - const ValidRegion dst_valid_region = shape_to_valid_region(dst_shape); - validate(dst.info()->valid_region(), dst_valid_region); + if(1U == dst_num_planes) + { + CLTensor *dst_plane = ref_dst.cl_plane(0); + color_convert.configure(src_plane, dst_plane); + } + else + { + color_convert.configure(src_plane, &ref_dst); + } } else { - color_convert.configure(&ref_src, &dst); + if(1U == dst_num_planes) + { + CLTensor *dst_plane = ref_dst.cl_plane(0); + color_convert.configure(&ref_src, dst_plane); + } + else + { + color_convert.configure(&ref_src, &ref_dst); + } + } + + for(unsigned int plane_idx = 0; plane_idx < src_num_planes; ++plane_idx) + { + const CLTensor *src_plane = ref_src.cl_plane(plane_idx); + + ARM_COMPUTE_EXPECT(src_plane->info()->is_resizable(), framework::LogLevel::ERRORS); + } + for(unsigned int plane_idx = 0; plane_idx < dst_num_planes; ++plane_idx) + { + const CLTensor *dst_plane = ref_dst.cl_plane(plane_idx); + + ARM_COMPUTE_EXPECT(dst_plane->info()->is_resizable(), framework::LogLevel::ERRORS); } } } // namespace @@ -83,6 +123,9 @@ inline void validate_configuration(const TensorShape &shape, Format src_format, TEST_SUITE(CL) TEST_SUITE(ColorConvert) +template <typename T> +using CLColorConvertFixture = ColorConvertValidationFixture<CLMultiImage, CLTensor, CLAccessor, CLColorConvert, T>; + TEST_SUITE(Configuration) DATA_TEST_CASE(RGBA, framework::DatasetMode::ALL, combine(concat(datasets::Small2DShapes(), datasets::Large2DShapes()), ColorConvertRGBADataset), shape, src_format, dst_format) @@ -107,34 +150,63 @@ DATA_TEST_CASE(RGB, framework::DatasetMode::ALL, combine(concat(datasets::Small2 { validate_configuration(shape, src_format, dst_format); } -TEST_SUITE_END() -template <typename T> -using CLColorConvertFixture = ColorConvertValidationFixture<CLMultiImage, CLTensor, CLAccessor, CLColorConvert, T>; +DATA_TEST_CASE(NV, framework::DatasetMode::ALL, combine(concat(datasets::Small2DShapes(), datasets::Large2DShapes()), ColorConvertNVDataset), + shape, src_format, dst_format) +{ + validate_configuration(shape, src_format, dst_format); +} + +DATA_TEST_CASE(YUVtoNV, framework::DatasetMode::ALL, combine(concat(datasets::Small2DShapes(), datasets::Large2DShapes()), ColorConvertYUYVtoNVDataset), + shape, src_format, dst_format) +{ + validate_configuration(shape, src_format, dst_format); +} + +DATA_TEST_CASE(NVtoYUV, framework::DatasetMode::ALL, combine(concat(datasets::Small2DShapes(), datasets::Large2DShapes()), ColorConvertNVtoYUVDataset), + shape, src_format, dst_format) +{ + validate_configuration(shape, src_format, dst_format); +} +TEST_SUITE_END() TEST_SUITE(RGBA) FIXTURE_DATA_TEST_CASE(RunSmall, CLColorConvertFixture<uint8_t>, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvertRGBADataset)) { // Validate output - validate(CLAccessor(_target), _reference); + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx]); + } } FIXTURE_DATA_TEST_CASE(RunLarge, CLColorConvertFixture<uint8_t>, framework::DatasetMode::NIGHTLY, combine(datasets::Large2DShapes(), ColorConvertRGBADataset)) { // Validate output - validate(CLAccessor(_target), _reference); + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx]); + } } + TEST_SUITE_END() TEST_SUITE(YUV) FIXTURE_DATA_TEST_CASE(RunSmall, CLColorConvertFixture<uint8_t>, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvertYUVDataset)) { // Validate output - validate(CLAccessor(_target), _reference); + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx]); + } } FIXTURE_DATA_TEST_CASE(RunLarge, CLColorConvertFixture<uint8_t>, framework::DatasetMode::NIGHTLY, combine(datasets::Large2DShapes(), ColorConvertYUVDataset)) { - validate(CLAccessor(_target), _reference); + // Validate output + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx]); + } } TEST_SUITE_END() @@ -142,12 +214,18 @@ TEST_SUITE(YUVPlanar) FIXTURE_DATA_TEST_CASE(RunSmall, CLColorConvertFixture<uint8_t>, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvertYUVPlanarDataset)) { // Validate output - validate(CLAccessor(_target), _reference); + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx]); + } } FIXTURE_DATA_TEST_CASE(RunLarge, CLColorConvertFixture<uint8_t>, framework::DatasetMode::NIGHTLY, combine(datasets::Large2DShapes(), ColorConvertYUVPlanarDataset)) { // Validate output - validate(CLAccessor(_target), _reference); + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx]); + } } TEST_SUITE_END() @@ -155,14 +233,80 @@ TEST_SUITE(RGB) FIXTURE_DATA_TEST_CASE(RunSmall, CLColorConvertFixture<uint8_t>, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvertRGBDataset)) { // Validate output - validate(CLAccessor(_target), _reference); + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx]); + } } FIXTURE_DATA_TEST_CASE(RunLarge, CLColorConvertFixture<uint8_t>, framework::DatasetMode::NIGHTLY, combine(datasets::Large2DShapes(), ColorConvertRGBDataset)) { // Validate output - validate(CLAccessor(_target), _reference); + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx]); + } +} +TEST_SUITE_END() + +TEST_SUITE(NV) +FIXTURE_DATA_TEST_CASE(RunSmall, CLColorConvertFixture<uint8_t>, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvertNVDataset)) +{ + // Validate output + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx], tolerance_nv); + } +} +FIXTURE_DATA_TEST_CASE(RunLarge, CLColorConvertFixture<uint8_t>, framework::DatasetMode::NIGHTLY, combine(datasets::Large2DShapes(), ColorConvertNVDataset)) +{ + // Validate output + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx], tolerance_nv); + } +} +TEST_SUITE_END() + +TEST_SUITE(YUYVtoNV) +FIXTURE_DATA_TEST_CASE(RunSmall, CLColorConvertFixture<uint8_t>, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvertYUYVtoNVDataset)) +{ + // Validate output + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx]); + } +} +FIXTURE_DATA_TEST_CASE(RunLarge, CLColorConvertFixture<uint8_t>, framework::DatasetMode::NIGHTLY, combine(datasets::Large2DShapes(), ColorConvertYUYVtoNVDataset)) +{ + // Validate output + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx]); + } +} + +TEST_SUITE_END() + +TEST_SUITE(NVtoYUV) +FIXTURE_DATA_TEST_CASE(RunSmall, CLColorConvertFixture<uint8_t>, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvertNVtoYUVDataset)) +{ + // Validate output + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx]); + } } +FIXTURE_DATA_TEST_CASE(RunLarge, CLColorConvertFixture<uint8_t>, framework::DatasetMode::NIGHTLY, combine(datasets::Large2DShapes(), ColorConvertNVtoYUVDataset)) +{ + // Validate output + for(unsigned int plane_idx = 0; plane_idx < _dst_num_planes; ++plane_idx) + { + validate(CLAccessor(*_target.cl_plane(plane_idx)), _reference[plane_idx]); + } +} + TEST_SUITE_END() + TEST_SUITE_END() TEST_SUITE_END() } // namespace validation |