On Fri, Jul 27, 2018 at 10:53 AM, Michel Dänzer <michel at daenzer.net> wrote: > From: Michel Dänzer <michel.daenzer at amd.com> > > Inspired by the modesetting driver. > > Fixes screen pixmap corruption with Xorg < 1.20, and as a bonus, > simplifies the code slightly. > > v2: > * Now doesn't break with xserver 1.20 > > Bugzilla: https://bugs.freedesktop.org/107385 > Signed-off-by: Michel Dänzer <michel.daenzer at amd.com> Reviewed-by: Alex Deucher <alexander.deucher at amd.com> > --- > src/radeon_glamor.c | 34 +++++++++++++++------------------- > 1 file changed, 15 insertions(+), 19 deletions(-) > > diff --git a/src/radeon_glamor.c b/src/radeon_glamor.c > index b649bd18d..c733d192d 100644 > --- a/src/radeon_glamor.c > +++ b/src/radeon_glamor.c > @@ -50,9 +50,9 @@ radeon_glamor_exchange_buffers(PixmapPtr src, > Bool > radeon_glamor_create_screen_resources(ScreenPtr screen) > { > + PixmapPtr screen_pixmap = screen->GetScreenPixmap(screen); > ScrnInfoPtr scrn = xf86ScreenToScrn(screen); > RADEONInfoPtr info = RADEONPTR(scrn); > - uint32_t handle; > > if (!info->use_glamor) > return TRUE; > @@ -62,17 +62,8 @@ radeon_glamor_create_screen_resources(ScreenPtr screen) > return FALSE; > #endif > > - if (info->front_buffer->flags & RADEON_BO_FLAGS_GBM) > - handle = gbm_bo_get_handle(info->front_buffer->bo.gbm).u32; > - else > - handle = info->front_buffer->bo.radeon->handle; > - > - if (!glamor_egl_create_textured_screen(screen, handle, > - scrn->displayWidth * > - info->pixel_bytes)) > - return FALSE; > - > - return TRUE; > + return radeon_glamor_create_textured_pixmap(screen_pixmap, > + info->front_buffer); > } > > > @@ -180,17 +171,22 @@ radeon_glamor_create_textured_pixmap(PixmapPtr pixmap, struct radeon_buffer *bo) > { > ScrnInfoPtr scrn = xf86ScreenToScrn(pixmap->drawable.pScreen); > RADEONInfoPtr info = RADEONPTR(scrn); > - uint32_t handle; > > if (!info->use_glamor) > return TRUE; > > - if (bo->flags & RADEON_BO_FLAGS_GBM) > - handle = gbm_bo_get_handle(bo->bo.gbm).u32; > - else > - handle = bo->bo.radeon->handle; > - > - return glamor_egl_create_textured_pixmap(pixmap, handle, pixmap->devKind); > + if (bo->flags & RADEON_BO_FLAGS_GBM) { > + return glamor_egl_create_textured_pixmap_from_gbm_bo(pixmap, > + bo->bo.gbm > +#if XORG_VERSION_CURRENT > XORG_VERSION_NUMERIC(1,19,99,903,0) > + , FALSE > +#endif > + ); > + } else { > + return glamor_egl_create_textured_pixmap(pixmap, > + bo->bo.radeon->handle, > + pixmap->devKind); > + } > } > > static Bool radeon_glamor_destroy_pixmap(PixmapPtr pixmap) > -- > 2.18.0 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx