diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3240-drm-amd-display-Allow-cursor-async-updates-for-frame.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3240-drm-amd-display-Allow-cursor-async-updates-for-frame.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3240-drm-amd-display-Allow-cursor-async-updates-for-frame.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3240-drm-amd-display-Allow-cursor-async-updates-for-frame.patch new file mode 100644 index 00000000..e2941138 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3240-drm-amd-display-Allow-cursor-async-updates-for-frame.patch @@ -0,0 +1,60 @@ +From 8b1385c1108b9d6f1a52a62a7caea496ec2442e2 Mon Sep 17 00:00:00 2001 +From: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> +Date: Mon, 10 Jun 2019 08:47:57 -0400 +Subject: [PATCH 3240/4256] drm/amd/display: Allow cursor async updates for + framebuffer swaps + +[Why] +We previously allowed framebuffer swaps as async updates for cursor +planes but had to disable them due to a bug in DRM with async update +handling and incorrect ref counting. The check to block framebuffer +swaps has been added to DRM for a while now, so this check is redundant. + +The real fix that allows this to properly in DRM has also finally been +merged and is getting backported into stable branches, so dropping +this now seems to be the right time to do so. + +[How] +Drop the redundant check for old_fb != new_fb. + +With the proper fix in DRM, this should also fix some cursor stuttering +issues with xf86-video-amdgpu since it double buffers the cursor. + +IGT tests that swap framebuffers (-varying-size for example) should +also pass again. + +Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> +Acked-by: Alex Deucher <alexander.deucher@amd.com> +Reviewed-by: David Francis <david.francis@amd.com> +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 ---------- + 1 file changed, 10 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 d981cbcd2ce2..ea57affae0cc 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -4527,20 +4527,10 @@ static int dm_plane_atomic_check(struct drm_plane *plane, + static int dm_plane_atomic_async_check(struct drm_plane *plane, + struct drm_plane_state *new_plane_state) + { +- struct drm_plane_state *old_plane_state = +- drm_atomic_get_old_plane_state(new_plane_state->state, plane); +- + /* Only support async updates on cursor planes. */ + if (plane->type != DRM_PLANE_TYPE_CURSOR) + return -EINVAL; + +- /* +- * DRM calls prepare_fb and cleanup_fb on new_plane_state for +- * async commits so don't allow fb changes. +- */ +- if (old_plane_state->fb != new_plane_state->fb) +- return -EINVAL; +- + return 0; + } + +-- +2.17.1 + |