From 69365526d0a477e0d7842571a72266631c77742d Mon Sep 17 00:00:00 2001 From: Dor Askayo Date: Sat, 21 Aug 2021 19:11:05 +0300 Subject: glamor: Set AMDGPU_CREATE_PIXMAP_SCANOUT on DRI2 and shared pixmaps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The scanout usage flag wasn't applied for DRI2 and shared pixmaps in 0732f81a2c67, resulting in GPU artifacts in some scenarios. Fixes: 0732f81a2c67 ("glamor: Make pixmap scanout compatible if its dimensions are") Closes: https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu/-/issues/41 Signed-off-by: Dor Askayo Signed-off-by: Michel Dänzer Reviewed-by: Michel Dänzer --- src/amdgpu_glamor.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/amdgpu_glamor.c b/src/amdgpu_glamor.c index fb7a46b..31fcfb4 100644 --- a/src/amdgpu_glamor.c +++ b/src/amdgpu_glamor.c @@ -209,6 +209,14 @@ amdgpu_glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth, if (!format) return NULL; + if (usage != CREATE_PIXMAP_USAGE_BACKING_PIXMAP && + !info->shadow_primary && + w >= scrn->virtualX && + w <= scrn->displayWidth && + h == scrn->virtualY && + format->bitsPerPixel == scrn->bitsPerPixel) + usage |= AMDGPU_CREATE_PIXMAP_SCANOUT; + if (!(usage & AMDGPU_CREATE_PIXMAP_SCANOUT) && !AMDGPU_CREATE_PIXMAP_SHARED(usage)) { if (info->shadow_primary) { @@ -218,15 +226,9 @@ amdgpu_glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth, usage |= AMDGPU_CREATE_PIXMAP_LINEAR | AMDGPU_CREATE_PIXMAP_GTT; } else if (usage != CREATE_PIXMAP_USAGE_BACKING_PIXMAP) { - if (w < scrn->virtualX || w > scrn->displayWidth || - h != scrn->virtualY || - format->bitsPerPixel != scrn->bitsPerPixel) { - pixmap = glamor_create_pixmap(screen, w, h, depth, usage); - if (pixmap) - return pixmap; - } else { - usage |= AMDGPU_CREATE_PIXMAP_SCANOUT; - } + pixmap = glamor_create_pixmap(screen, w, h, depth, usage); + if (pixmap) + return pixmap; } } -- cgit v1.2.3