[igt-dev] [v6] tests/kms_color: Fix CRC mismatch issues with ctm test

Uma Shankar uma.shankar at intel.com
Wed Apr 3 12:20:10 UTC 2019


Due to Gamma/Degamma limitation wrt representation of intermediate
values between 0 and 1.0 causing rounding issues and inaccuracies,
applying linear gamma affects crc. This patch fixes the same by
making ctm max test independent 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.

v3: Fixed a fumble with compilation.

v4: Disabling degamma and gamma for ctm max tests, after the logic
in kernel has been updated by Ville's series.

v5: Disabled gamma/degamma for all ctm tests as suggested by Ville.

v6: Restricting disabling of linear gamma luts for ctm max test.
Updated the commit message and comment as suggested by Daniel.

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..3aac7fb 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -696,8 +696,20 @@ 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 intermediate values between 0 and 1.0 causes
+		 * rounding issues and inaccuracies leading to crc mismatch.
+		 */
+		if (memcmp(before, after, sizeof(color_t))) {
+			set_degamma(data, primary->pipe, degamma_linear);
+			set_gamma(data, primary->pipe, gamma_linear);
+		} else {
+			/* Disable Degamma and Gamma for ctm max test */
+			disable_degamma(primary->pipe);
+			disable_gamma(primary->pipe);
+		}
+
 		disable_ctm(primary->pipe);
 		igt_display_commit(&data->display);
 
-- 
1.9.1



More information about the igt-dev mailing list