summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c15
1 files changed, 15 insertions, 0 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 53dcb3518976..c27fb97b0135 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -348,6 +348,19 @@ static inline bool is_dc_timing_adjust_needed(struct dm_crtc_state *old_state,
return false;
}
+static inline void reverse_planes_order(struct dc_surface_update *array_of_surface_update,
+ int planes_count)
+{
+ int i, j;
+ struct dc_surface_update surface_updates_temp;
+
+ for (i = 0, j = planes_count - 1; i < j; i++, j--) {
+ surface_updates_temp = array_of_surface_update[i];
+ array_of_surface_update[i] = array_of_surface_update[j];
+ array_of_surface_update[j] = surface_updates_temp;
+ }
+}
+
/**
* update_planes_and_stream_adapter() - Send planes to be updated in DC
*
@@ -364,6 +377,8 @@ static inline bool update_planes_and_stream_adapter(struct dc *dc,
struct dc_stream_update *stream_update,
struct dc_surface_update *array_of_surface_update)
{
+ reverse_planes_order(array_of_surface_update, planes_count);
+
/*
* Previous frame finished and HW is ready for optimization.
*/