drm/amd/display: Bypass gamma set if not standard type
authorJohn Barberiz <jbarberi@amd.com>
Thu, 18 Jan 2018 17:22:11 +0000 (12:22 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 19 Feb 2018 19:19:25 +0000 (14:19 -0500)
If non-standard gamma type detected set identity matrix flag
so that we can bypass the gamma mode.

Signed-off-by: John Barberiz <jbarberi@amd.com>
Reviewed-by: Krunoslav Kovac <Krunoslav.Kovac@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dc_hw_types.h
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c

index 11104086828dce8a0bc2b362a78be6481c597344..e91ac6811990160c150693266340ac6ba1ceb6be 100644 (file)
@@ -436,6 +436,8 @@ struct dc_gamma {
 
        /* private to DC core */
        struct dc_context *ctx;
+
+       bool is_identity;
 };
 
 /* Used by both ipp amd opp functions*/
index f261c7cfb0032759ca8f8777339b188578cdc28c..8ce9a4e7079312101b6117ec46c3be4ca8dae1fa 100644 (file)
@@ -900,7 +900,9 @@ static bool dcn10_set_input_transfer_func(struct pipe_ctx *pipe_ctx,
        if (plane_state->in_transfer_func)
                tf = plane_state->in_transfer_func;
 
-       if (plane_state->gamma_correction && dce_use_lut(plane_state->format))
+       if (plane_state->gamma_correction->is_identity)
+               dpp_base->funcs->dpp_set_degamma(dpp_base, IPP_DEGAMMA_MODE_BYPASS);
+       else if (plane_state->gamma_correction && dce_use_lut(plane_state->format))
                dpp_base->funcs->dpp_program_input_lut(dpp_base, plane_state->gamma_correction);
 
        if (tf == NULL)