From: Nicholas Kazlauskas <nicholas.kazlaus...@amd.com>

[Why]
Surface scaling info updates can affect bandwidth and blocks. We need
to be checking these with global validation to avoid underflow or
corruption.

[How]
Drop the state->allow_modeset early exit in
dm_determine_update_type_for_commit. Most of those should be considered
fast now anyway.

Fill in scaling info and it to the surface update in atomic
check.

Change-Id: I3d32b8426a8097bb34851c51dfe143a75707f08d
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlaus...@amd.com>
Reviewed-by: David Francis <david.fran...@amd.com>
Acked-by: Bhawanpreet Lakha <Bhawanpreet la...@amd.com>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 3aa1b9c05f88..3ff87bc31a8d 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -6406,6 +6406,7 @@ dm_determine_update_type_for_commit(struct 
amdgpu_display_manager *dm,
 
        for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, 
new_crtc_state, i) {
                struct dc_stream_update stream_update = { 0 };
+               struct dc_scaling_info scaling_info;
 
                new_dm_crtc_state = to_dm_crtc_state(new_crtc_state);
                old_dm_crtc_state = to_dm_crtc_state(old_crtc_state);
@@ -6433,9 +6434,6 @@ dm_determine_update_type_for_commit(struct 
amdgpu_display_manager *dm,
                                goto cleanup;
                        }
 
-                       if (!state->allow_modeset)
-                               continue;
-
                        if (crtc != new_plane_crtc)
                                continue;
 
@@ -6457,6 +6455,13 @@ dm_determine_update_type_for_commit(struct 
amdgpu_display_manager *dm,
                                                
new_dm_crtc_state->stream->out_transfer_func;
                        }
 
+                       ret = fill_dc_scaling_info(new_plane_state,
+                                                  &scaling_info);
+                       if (ret)
+                               goto cleanup;
+
+                       updates[num_plane].scaling_info = &scaling_info;
+
                        num_plane++;
                }
 
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to