From: Mukunda Pramodh Kumar <mukunda.pramodh.ku...@intel.com>

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: 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.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/tests/kms_color.c b/tests/kms_color.c
index d9fe417ba9..00742afaaf 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -232,8 +232,6 @@ static void test_pipe_gamma(data_t *data,
 
        igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_GAMMA_LUT));
 
-       gamma_full = generate_table_max(data->gamma_lut_size);
-
        output = igt_get_single_output_for_pipe(&data->display, 
primary->pipe->pipe);
        igt_require(output);
 
@@ -258,10 +256,13 @@ static void test_pipe_gamma(data_t *data,
        igt_assert(fb_modeset_id);
 
        igt_plane_set_fb(primary, &fb_modeset);
+       /* Reset 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,
+                           display->pipes[primary->pipe->pipe].crtc_offset);
 
        /* Draw solid colors with no gamma transformation. */
        paint_rectangles(data, mode, red_green_blue, &fb);
@@ -274,6 +275,13 @@ static void test_pipe_gamma(data_t *data,
        /* Draw a gradient with gamma LUT to remap all values
         * to max red/green/blue.
         */
+       if (igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_GAMMA_MODE)) {
+               set_advance_gamma(data, primary->pipe, MAX_GAMMA);
+       } else {
+               gamma_full = generate_table_max(data->gamma_lut_size);
+               set_gamma(data, primary->pipe, gamma_full);
+               igt_display_commit(&data->display);
+       }
        paint_gradient_rectangles(data, mode, red_green_blue, &fb);
        igt_plane_set_fb(primary, &fb);
        igt_display_commit(&data->display);
@@ -581,7 +589,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);
-- 
2.32.0

Reply via email to