mirror of
https://github.com/X11Libre/xf86-video-amdgpu.git
synced 2026-03-24 01:24:31 +00:00
glamor: Set AMDGPU_CREATE_PIXMAP_SCANOUT on DRI2 and shared pixmaps
The scanout usage flag wasn't applied for DRI2 and shared pixmaps in0732f81a2c, resulting in GPU artifacts in some scenarios. Fixes:0732f81a2c("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 <dor.askayo@gmail.com> Signed-off-by: Michel Dänzer <mdaenzer@redhat.com> Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user