diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/amdgpu_glamor.c | 20 |
1 files changed, 11 insertions, 9 deletions
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; } } |