mirror of
https://github.com/X11Libre/xf86-video-amdgpu.git
synced 2026-03-24 01:24:31 +00:00
Fix amdgpu_scanout_extents_intersect for GPU screens
Fixes incorrect screen updates with TearFree enabled on PRIME slave outputs which are not located at (0, 0). (Ported from radeon commit a995f5830916a0fee5126263d1bfe48632be3a15) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Michel Dänzer
parent
082b6b8ca1
commit
0f79c30619
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user