aboutsummaryrefslogtreecommitdiff
path: root/src/core/CL/kernels/CLColorConvertKernel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/CL/kernels/CLColorConvertKernel.cpp')
-rw-r--r--src/core/CL/kernels/CLColorConvertKernel.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/core/CL/kernels/CLColorConvertKernel.cpp b/src/core/CL/kernels/CLColorConvertKernel.cpp
index 52d9be9418..2b894989e1 100644
--- a/src/core/CL/kernels/CLColorConvertKernel.cpp
+++ b/src/core/CL/kernels/CLColorConvertKernel.cpp
@@ -198,6 +198,7 @@ void CLColorConvertKernel::configure(const ICLImage *input, ICLMultiImage *outpu
ARM_COMPUTE_ERROR_ON(output == nullptr);
unsigned int num_elems_processed_per_iteration = 0;
+ unsigned int num_elems_read_per_iteration_x = 0;
bool has_two_planes = (output->info()->format() == Format::NV12) || (output->info()->format() == Format::NV21);
float sub_sampling = (has_two_planes || (output->info()->format() == Format::IYUV)) ? 0.5f : 1;
@@ -212,9 +213,11 @@ void CLColorConvertKernel::configure(const ICLImage *input, ICLMultiImage *outpu
case Format::NV12:
case Format::IYUV:
num_elems_processed_per_iteration = 2;
+ num_elems_read_per_iteration_x = 8;
break;
case Format::YUV444:
num_elems_processed_per_iteration = 4;
+ num_elems_read_per_iteration_x = 16;
break;
default:
break;
@@ -229,6 +232,7 @@ void CLColorConvertKernel::configure(const ICLImage *input, ICLMultiImage *outpu
case Format::NV12:
case Format::IYUV:
num_elems_processed_per_iteration = 8;
+ num_elems_read_per_iteration_x = 8;
break;
default:
break;
@@ -238,6 +242,7 @@ void CLColorConvertKernel::configure(const ICLImage *input, ICLMultiImage *outpu
default:
break;
}
+
ARM_COMPUTE_ERROR_ON_MSG(num_elems_processed_per_iteration == 0, "Conversion from %s to %s not supported",
string_from_format(input->info()->format()).c_str(),
string_from_format(output->info()->format()).c_str());
@@ -248,7 +253,6 @@ void CLColorConvertKernel::configure(const ICLImage *input, ICLMultiImage *outpu
kernel_name << "_to_";
kernel_name << string_from_format(output->info()->format());
kernel_name << "_bt709";
-
_input = input;
_multi_output = output;
@@ -267,8 +271,10 @@ void CLColorConvertKernel::configure(const ICLImage *input, ICLMultiImage *outpu
AccessWindowRectangle output_plane2_access(has_two_planes ? nullptr : output->plane(2)->info(), 0, 0,
num_elems_processed_per_iteration, 1, sub_sampling, sub_sampling);
+ AccessWindowHorizontal input_access(input->info(), 0, num_elems_read_per_iteration_x);
+
update_window_and_padding(win,
- AccessWindowHorizontal(input->info(), 0, num_elems_processed_per_iteration),
+ input_access,
output_plane0_access,
output_plane1_access,
output_plane2_access);