From: Jerome Glisse <[email protected]> When creating a new pixmap/bo for dri2 drawable there is no need to create a new texture, instead the texture associated with the new pixmap should be use otherwise there is a missmatch between the bo backing the texture for the drawable and the bo used by dri2 client.
Signed-off-by: Jerome Glisse <[email protected]> --- src/radeon_dri2.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c index a211960..79d8f39 100644 --- a/src/radeon_dri2.c +++ b/src/radeon_dri2.c @@ -66,6 +66,10 @@ #define FALLBACK_SWAP_DELAY 16 +#ifdef USE_GLAMOR +#include <glamor.h> +#endif + typedef DRI2BufferPtr BufferPtr; struct dri2_buffer_priv { @@ -89,7 +93,6 @@ static PixmapPtr fixup_glamor(DrawablePtr drawable, PixmapPtr pixmap) PixmapPtr old = get_drawable_pixmap(drawable); #ifdef USE_GLAMOR ScreenPtr screen = drawable->pScreen; - ScrnInfoPtr scrn = xf86ScreenToScrn(screen); struct radeon_pixmap *priv = radeon_get_pixmap_private(pixmap); GCPtr gc; @@ -118,21 +121,13 @@ static PixmapPtr fixup_glamor(DrawablePtr drawable, PixmapPtr pixmap) } radeon_set_pixmap_private(pixmap, NULL); - screen->DestroyPixmap(pixmap); /* And redirect the pixmap to the new bo (for 3D). */ + glamor_egl_exchange_buffers(old, pixmap); radeon_set_pixmap_private(old, priv); + screen->DestroyPixmap(pixmap); old->refcnt++; - /* This creating should not fail, as we already created its - * successfully. But if it happens, we put a warning indicator - * here, and the old pixmap will still be a glamor pixmap, and - * latter the pixmap_flink will get a 0 name, then the X server - * will pass a BadAlloc to the client.*/ - if (!radeon_glamor_create_textured_pixmap(old)) - xf86DrvMsg(scrn->scrnIndex, X_WARNING, - "Failed to get DRI drawable for glamor pixmap.\n"); - screen->ModifyPixmapHeader(old, old->drawable.width, old->drawable.height, -- 1.8.3.1 _______________________________________________ xorg-driver-ati mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-driver-ati
