xserver: Branch 'master'

Michel Dänzer daenzer at kemper.freedesktop.org
Mon Nov 3 01:03:42 PST 2008


 glx/glxdri.c |   17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

New commits:
commit a7951a4dad902edea76a5cd68f833f0e48ae804b
Author: Michel Dänzer <michel at tungstengraphics.com>
Date:   Mon Nov 3 10:00:54 2008 +0100

    AIGLX: Allow 2D driver to prevent zero-copy texturing of a pixmap.
    
    The driver can return ~0ULL to achieve this, e.g. if the pixmap doesn't fit
    into offscreen storage or if its pixel format isn't supported by the 3D engine
    for texturing.
    
    See http://bugs.freedesktop.org/show_bug.cgi?id=17723 or
    http://bugs.freedesktop.org/show_bug.cgi?id=12385 .

diff --git a/glx/glxdri.c b/glx/glxdri.c
index ce098e1..c43e7c3 100644
--- a/glx/glxdri.c
+++ b/glx/glxdri.c
@@ -361,6 +361,21 @@ glxFillAlphaChannel (CARD32 *pixels, CARD32 rowstride, int width, int height)
     }
 }
 
+static Bool
+testTexOffset(__GLXDRIscreen * const screen, PixmapPtr pPixmap)
+{
+    Bool ret;
+
+    if (!screen->texOffsetStart || !screen->texOffset)
+	return FALSE;
+
+    __glXenterServer(GL_FALSE);
+    ret = screen->texOffsetStart(pPixmap) != ~0ULL;
+    __glXleaveServer(GL_FALSE);
+
+    return ret;
+}
+
 /*
  * (sticking this here for lack of a better place)
  * Known issues with the GLX_EXT_texture_from_pixmap implementation:
@@ -396,7 +411,7 @@ __glXDRIbindTexImage(__GLXcontext *baseContext,
 
     pixmap = (PixmapPtr) glxPixmap->pDraw;
 
-    if (screen->texOffsetStart && screen->texOffset) {
+    if (testTexOffset(screen, pixmap)) {
 	__GLXDRIdrawable **texOffsetOverride = screen->texOffsetOverride;
 	int i, firstEmpty = 16;
 


More information about the xorg-commit mailing list