[igt-dev] [v2] tests/kms_color: Fix CRC mismatch issues with ctm test
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Mon Mar 25 01:40:37 UTC 2019
When degamma & gamma LUTs are disabled & CTM is enabled, i915 programs a
linear table in the degamma/gamma LUTs :
https://cgit.freedesktop.org/drm/drm-intel/tree/drivers/gpu/drm/i915/intel_color.c#n463
https://cgit.freedesktop.org/drm/drm-intel/tree/drivers/gpu/drm/i915/intel_color.c#n495
All the values programmed are in u16 range which is also what userspace
can program (this applies to BDW/SKL/KBL).
What is it that the kernel is able to program but not userspace?
-Lionel
On 24/03/2019 17:55, Uma Shankar wrote:
> Due to Gamma/Degamma limitation with precision (lack of
> exact 1.0 representation) due to ABI restriction, applying
> linear gamma affects crc. This patch fixes the same by making
> ctm tests independant of gamma/degamma.
>
> v2: Disable degamma/gamma programming for ctm max test as it
> leads to crc mimsmatch. Limiting it to this test case alone as
> other tests need it to be enabled, hence not touching those
> scenarios.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108147
> Signed-off-by: Uma Shankar <uma.shankar at intel.com>
> ---
> tests/kms_color.c | 16 ++++++++++++++--
> 1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index decf3c2..93560d4 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -696,8 +696,15 @@ static bool test_pipe_ctm(data_t *data,
> igt_assert(fb_modeset_id);
> igt_plane_set_fb(primary, &fb_modeset);
>
> - set_degamma(data, primary->pipe, degamma_linear);
> - set_gamma(data, primary->pipe, gamma_linear);
> + /*
> + * Don't program LUT's for max CTM cases as limitation of
> + * representing 1.0 due to ABI limits causes crc mismatch
> + */
> + if (memcmp(before, after, sizeof(color_t)))
> + set_degamma(data, primary->pipe, degamma_linear);
> + set_gamma(data, primary->pipe, gamma_linear);
> + }
> +
> disable_ctm(primary->pipe);
> igt_display_commit(&data->display);
>
> @@ -1005,6 +1012,11 @@ run_tests_for_pipe(data_t *data, enum pipe p)
> * produce with an 8 bits per color framebuffer. */
> igt_require(!IS_CHERRYVIEW(data->devid));
>
> + /* Disable and let default luts be applied by kernel */
> + disable_degamma(primary->pipe);
> + disable_gamma(primary->pipe);
> + igt_display_commit(&data->display);
> +
> igt_assert(test_pipe_ctm(data, primary, red_green_blue,
> full_rgb, ctm));
> }
More information about the igt-dev
mailing list