mirror of
https://github.com/X11Libre/xf86-video-amdgpu.git
synced 2026-03-24 01:24:31 +00:00
glamor: Reallocate linear pixmap BO if necessary for DRI2 PRIME
Fixes corruption when using DRI2 PRIME render offloading with the master screen using this driver. Reported-by: Qiang Yu <qiang.yu@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Tested-by: Qiang Yu <qiang.yu@amd.com>
This commit is contained in:
committed by
Michel Dänzer
parent
5518bf5d79
commit
0007c2f018
@@ -327,10 +327,31 @@ amdgpu_glamor_share_pixmap_backing(PixmapPtr pixmap, ScreenPtr slave,
|
||||
void **handle_p)
|
||||
{
|
||||
ScreenPtr screen = pixmap->drawable.pScreen;
|
||||
uint64_t tiling_info;
|
||||
CARD16 stride;
|
||||
CARD32 size;
|
||||
int fd;
|
||||
|
||||
tiling_info = amdgpu_pixmap_get_tiling_info(pixmap);
|
||||
if (AMDGPU_TILING_GET(tiling_info, ARRAY_MODE) != 0) {
|
||||
PixmapPtr linear;
|
||||
|
||||
/* We don't want to re-allocate the screen pixmap as
|
||||
* linear, to avoid trouble with page flipping
|
||||
*/
|
||||
if (screen->GetScreenPixmap(screen) == pixmap)
|
||||
return FALSE;
|
||||
|
||||
linear = screen->CreatePixmap(screen, pixmap->drawable.width,
|
||||
pixmap->drawable.height,
|
||||
pixmap->drawable.depth,
|
||||
CREATE_PIXMAP_USAGE_SHARED);
|
||||
if (!linear)
|
||||
return FALSE;
|
||||
|
||||
amdgpu_glamor_set_pixmap_bo(&pixmap->drawable, linear);
|
||||
}
|
||||
|
||||
fd = glamor_fd_from_pixmap(screen, pixmap, &stride, &size);
|
||||
if (fd < 0)
|
||||
return FALSE;
|
||||
|
||||
Reference in New Issue
Block a user