[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