drm/amd/display: Reset planes for color management changes
authorNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Wed, 1 May 2019 14:26:09 +0000 (10:26 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 31 May 2019 15:39:33 +0000 (10:39 -0500)
[Why]
For commits with allow_modeset=false and CRTC degamma changes the planes
aren't reset. This results in incorrect rendering.

[How]
Reset the planes when color management has changed on the CRTC.
Technically this will include regamma changes as well, but it doesn't
really after legacy userspace since those commit with
allow_modeset=true.

Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Harry Wentland <Harry.Wentland@amd.com>
Acked-by: Leo Li <sunpeng.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index 64dff3fc1f7b138249e8ab4ec0c7bf26b611f905..95d5966479e90f15436378a11e2a52b20e13b055 100644 (file)
@@ -6354,6 +6354,10 @@ static bool should_reset_plane(struct drm_atomic_state *state,
        if (!new_crtc_state)
                return true;
 
+       /* CRTC Degamma changes currently require us to recreate planes. */
+       if (new_crtc_state->color_mgmt_changed)
+               return true;
+
        if (drm_atomic_crtc_needs_modeset(new_crtc_state))
                return true;