Module: Mesa
Branch: master
Commit: e34ea368d9fccaf84b7e4aec4ba3f633eeaefec6
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e34ea368d9fccaf84b7e4aec4ba3f633eeaefec6

Author: Michel Dänzer <daen...@vmware.com>
Date:   Tue Sep  8 18:08:24 2009 +0200

st/xorg: Add support for EXA_MIXED_PIXMAPS and EXA_SUPPORTS_PREPARE_AUX.

Also make sure not to leak malloced memory when switching pixmaps to texture
based.

---

 src/gallium/state_trackers/xorg/xorg_dri2.c |    1 +
 src/gallium/state_trackers/xorg/xorg_exa.c  |    9 +++++++++
 2 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/gallium/state_trackers/xorg/xorg_dri2.c 
b/src/gallium/state_trackers/xorg/xorg_dri2.c
index 6431a0f..8a36259 100644
--- a/src/gallium/state_trackers/xorg/xorg_dri2.c
+++ b/src/gallium/state_trackers/xorg/xorg_dri2.c
@@ -118,6 +118,7 @@ driDoCreateBuffer(DrawablePtr pDraw, DRI2BufferPtr buffer, 
unsigned int format)
     }
 
     if (!tex) {
+       exaMoveInPixmap(private->pPixmap);
        xorg_exa_set_shared_usage(private->pPixmap);
        pScreen->ModifyPixmapHeader(private->pPixmap, 0, 0, 0, 0, 0, NULL);
        tex = xorg_exa_get_texture(private->pPixmap);
diff --git a/src/gallium/state_trackers/xorg/xorg_exa.c 
b/src/gallium/state_trackers/xorg/xorg_exa.c
index a17a71f..1a183de 100644
--- a/src/gallium/state_trackers/xorg/xorg_exa.c
+++ b/src/gallium/state_trackers/xorg/xorg_exa.c
@@ -563,6 +563,9 @@ ExaModifyPixmapHeader(PixmapPtr pPixmap, int width, int 
height,
                               pPixmap->devKind, 0, 0);
                exa->scrn->transfer_unmap(exa->scrn, transfer);
                exa->scrn->tex_transfer_destroy(transfer);
+
+               xfree(pPixmap->devPrivate.ptr);
+               pPixmap->devPrivate.ptr = NULL;
            }
        }
 #ifdef DRM_MODE_FEATURE_DIRTYFB
@@ -645,6 +648,12 @@ xorg_exa_init(ScrnInfoPtr pScrn)
    pExa->pixmapOffsetAlign = 0;
    pExa->pixmapPitchAlign  = 1;
    pExa->flags             = EXA_OFFSCREEN_PIXMAPS | EXA_HANDLES_PIXMAPS;
+#ifdef EXA_SUPPORTS_PREPARE_AUX
+   pExa->flags            |= EXA_SUPPORTS_PREPARE_AUX;
+#endif
+#ifdef EXA_MIXED_PIXMAPS
+   pExa->flags            |= EXA_MIXED_PIXMAPS;
+#endif
    pExa->maxX              = 8191; /* FIXME */
    pExa->maxY              = 8191; /* FIXME */
 

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to