Extended IGT tests to support logarithmic gamma mode on pipe

Cc: Harry Wentland <harry.wentl...@amd.com>
Cc: Ville Syrjälä <ville.syrj...@linux.intel.com>
Cc: Juha-Pekka Heikkila <juhapekka.heikk...@gmail.com>
Cc: Kunal Joshi <kunal1.jo...@intel.com>
Cc: Uma Shankar <uma.shan...@intel.com>
Signed-off-by: Mukunda Pramodh Kumar <mukunda.pramodh.ku...@intel.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.mo...@intel.com>
---
 tests/kms_color_chamelium.c | 40 ++++++++++++++++++++++++++++++++++---
 1 file changed, 37 insertions(+), 3 deletions(-)

diff --git a/tests/kms_color_chamelium.c b/tests/kms_color_chamelium.c
index af820565d3..26e940f4c1 100644
--- a/tests/kms_color_chamelium.c
+++ b/tests/kms_color_chamelium.c
@@ -317,10 +317,21 @@ static void test_pipe_gamma(data_t *data,
                igt_assert(fbref_id);
 
                igt_plane_set_fb(primary, &fb_modeset);
+
+               /* Reset the color properties */
                disable_ctm(primary->pipe);
                disable_degamma(primary->pipe);
-               set_gamma(data, primary->pipe, gamma_full);
+               disable_gamma(primary->pipe);
                igt_display_commit(&data->display);
+               igt_wait_for_vblank(data->drm_fd,
+                                   
data->display.pipes[primary->pipe->pipe].crtc_offset);
+
+               if (igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_GAMMA_MODE)) {
+                       set_advance_gamma(data, primary->pipe, MAX_GAMMA);
+               } else {
+                       set_gamma(data, primary->pipe, gamma_full);
+                       igt_display_commit(&data->display);
+               }
 
                /* Draw solid colors with no gamma transformation. */
                paint_rectangles(data, mode, red_green_blue, &fbref);
@@ -343,6 +354,7 @@ static void test_pipe_gamma(data_t *data,
                                              frame_fullcolors, &fbref,
                                              CHAMELIUM_CHECK_ANALOG);
 
+               /* Cleanup */
                disable_gamma(primary->pipe);
                igt_plane_set_fb(primary, NULL);
                igt_output_set_pipe(output, PIPE_NONE);
@@ -431,7 +443,10 @@ static bool test_pipe_ctm(data_t *data,
 
                if (memcmp(before, after, sizeof(color_t))) {
                        set_degamma(data, primary->pipe, degamma_linear);
-                       set_gamma(data, primary->pipe, gamma_linear);
+                       if (igt_pipe_obj_has_prop(primary->pipe, 
IGT_CRTC_GAMMA_MODE))
+                               disable_gamma(primary->pipe);
+                       else
+                               set_gamma(data, primary->pipe, gamma_linear);
                } else {
                        /* Disable Degamma and Gamma for ctm max test */
                        disable_degamma(primary->pipe);
@@ -465,6 +480,12 @@ static bool test_pipe_ctm(data_t *data,
                igt_output_set_pipe(output, PIPE_NONE);
        }
 
+       /* Cleanup */
+       disable_gamma(primary->pipe);
+       disable_degamma(primary->pipe);
+       disable_ctm(primary->pipe);
+       igt_display_commit(&data->display);
+
        free_lut(degamma_linear);
        free_lut(gamma_linear);
 
@@ -561,7 +582,14 @@ static void test_pipe_limited_range_ctm(data_t *data,
                igt_plane_set_fb(primary, &fb_modeset);
 
                set_degamma(data, primary->pipe, degamma_linear);
-               set_gamma(data, primary->pipe, gamma_linear);
+               /*
+                * No need of linear gamma for limited range ctm test
+                * Not extending for new API interface.
+                */
+               if (igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_GAMMA_MODE))
+                       disable_gamma(primary->pipe);
+               else
+                       set_gamma(data, primary->pipe, gamma_linear);
                set_ctm(primary->pipe, ctm);
 
                igt_output_set_prop_value(output,
@@ -598,6 +626,12 @@ static void test_pipe_limited_range_ctm(data_t *data,
 
        }
 
+       /* Cleanup */
+       disable_gamma(primary->pipe);
+       disable_degamma(primary->pipe);
+       disable_ctm(primary->pipe);
+       igt_display_commit(&data->display);
+
        free_lut(gamma_linear);
        free_lut(degamma_linear);
 
-- 
2.32.0

Reply via email to