summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/amdgpu_kms.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c
index 48e65a1..8a2fd30 100644
--- a/src/amdgpu_kms.c
+++ b/src/amdgpu_kms.c
@@ -300,11 +300,21 @@ static Bool AMDGPUCreateScreenResources_KMS(ScreenPtr pScreen)
static Bool
amdgpu_scanout_extents_intersect(xf86CrtcPtr xf86_crtc, BoxPtr extents)
{
- extents->x1 -= xf86_crtc->filter_width >> 1;
- extents->x2 += xf86_crtc->filter_width >> 1;
- extents->y1 -= xf86_crtc->filter_height >> 1;
- extents->y2 += xf86_crtc->filter_height >> 1;
- pixman_f_transform_bounds(&xf86_crtc->f_framebuffer_to_crtc, extents);
+#ifdef AMDGPU_PIXMAP_SHARING
+ if (xf86_crtc->scrn->is_gpu) {
+ extents->x1 -= xf86_crtc->x;
+ extents->y1 -= xf86_crtc->y;
+ extents->x2 -= xf86_crtc->x;
+ extents->y2 -= xf86_crtc->y;
+ } else
+#endif
+ {
+ extents->x1 -= xf86_crtc->filter_width >> 1;
+ extents->x2 += xf86_crtc->filter_width >> 1;
+ extents->y1 -= xf86_crtc->filter_height >> 1;
+ extents->y2 += xf86_crtc->filter_height >> 1;
+ pixman_f_transform_bounds(&xf86_crtc->f_framebuffer_to_crtc, extents);
+ }
extents->x1 = max(extents->x1, 0);
extents->y1 = max(extents->y1, 0);