xserver: Branch 'server-1.5-branch' - 3 commits

Adam Jackson ajax at kemper.freedesktop.org
Mon Mar 10 15:18:33 PDT 2008


 GL/glx/glxdri.c        |    2 +-
 GL/glx/glxdri2.c       |   26 +++++++-------------------
 hw/xfree86/dri2/dri2.c |    5 +++--
 hw/xfree86/dri2/dri2.h |    3 ++-
 4 files changed, 13 insertions(+), 23 deletions(-)

New commits:
commit 02feb14a678e3b8ad9acf0b6db8d159b4fd64147
Author: Kristian Høgsberg <krh at sasori.boston.redhat.com>
Date:   Sun Mar 9 21:40:27 2008 -0400

    GLX: Track changes to DRI_TEX_BUFFER extension.
    
    We now just pass in the __DRIdrawable.
    (cherry picked from commit 01c2e01f2aee580438b74bfb9da8f584f3878e6b)

diff --git a/GL/glx/glxdri2.c b/GL/glx/glxdri2.c
index fbc018c..fecfb19 100644
--- a/GL/glx/glxdri2.c
+++ b/GL/glx/glxdri2.c
@@ -225,7 +225,7 @@ __glXDRIbindTexImage(__GLXcontext *baseContext,
     __GLXDRIscreen * const screen = (__GLXDRIscreen *) glxGetScreen(pScreen);
     PixmapPtr pixmap;
     __GLXDRIcontext *context = (__GLXDRIcontext *) baseContext;
-    unsigned int flags;
+    __GLXDRIdrawable *drawable = (__GLXDRIdrawable *) glxPixmap;
 
     if (screen->texBuffer == NULL)
         return Success;
@@ -233,10 +233,7 @@ __glXDRIbindTexImage(__GLXcontext *baseContext,
     pixmap = (PixmapPtr) glxPixmap->pDraw;
     screen->texBuffer->setTexBuffer(&context->driContext,
 				    glxPixmap->target,
-				    DRI2GetPixmapHandle(pixmap, &flags),
-				    pixmap->drawable.depth,
-				    pixmap->devKind,
-				    pixmap->drawable.height);
+				    &drawable->driDrawable);
 
     return Success;
 }
commit 12829f1e9158445dd66d32885ff9e3f902bf8c0e
Author: Kristian Høgsberg <krh at sasori.boston.redhat.com>
Date:   Sun Mar 9 21:39:19 2008 -0400

    DRI2: Return event buffer head index in DRI2CreateDrawable.
    
    And pass it to the DRI driver in AIGLX.
    (cherry picked from commit acedc03367e9e69f03b4838f0f0e8d8a8e872b9b)

diff --git a/GL/glx/glxdri.c b/GL/glx/glxdri.c
index dc15b0f..1e17911 100644
--- a/GL/glx/glxdri.c
+++ b/GL/glx/glxdri.c
@@ -704,7 +704,7 @@ __glXDRIscreenCreateDrawable(__GLXscreen *screen,
 	(driScreen->driScreen.createNewDrawable)(&driScreen->driScreen,
 						 modes,
 						 &private->driDrawable,
-						 hwDrawable, 0, NULL);
+						 hwDrawable, 0, 0, NULL);
 
     if (private->driDrawable.private == NULL) {
 	__glXenterServer(GL_FALSE);
diff --git a/GL/glx/glxdri2.c b/GL/glx/glxdri2.c
index 27257d3..fbc018c 100644
--- a/GL/glx/glxdri2.c
+++ b/GL/glx/glxdri2.c
@@ -341,6 +341,7 @@ __glXDRIscreenCreateDrawable(__GLXscreen *screen,
     __GLXDRIdrawable *private;
     GLboolean retval;
     drm_drawable_t hwDrawable;
+    unsigned int head;
 
     private = xalloc(sizeof *private);
     if (private == NULL)
@@ -359,13 +360,14 @@ __glXDRIscreenCreateDrawable(__GLXscreen *screen,
     private->base.swapBuffers   = __glXDRIdrawableSwapBuffers;
     private->base.copySubBuffer = __glXDRIdrawableCopySubBuffer;
 
-    retval = DRI2CreateDrawable(screen->pScreen, pDraw, &hwDrawable);
+    retval = DRI2CreateDrawable(screen->pScreen, pDraw,
+				&hwDrawable, &head);
 
     private->driDrawable.private =
 	(driScreen->driScreen.createNewDrawable)(&driScreen->driScreen,
 						 modes,
 						 &private->driDrawable,
-						 hwDrawable, 0, NULL);
+						 hwDrawable, head, 0, NULL);
 
     return &private->base;
 }
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index 9b4c18c..d2664b1 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -262,8 +262,8 @@ DRI2CloseScreen(ScreenPtr pScreen)
 }
 
 Bool
-DRI2CreateDrawable(ScreenPtr pScreen,
-		   DrawablePtr pDraw, drm_drawable_t *pDrmDrawable)
+DRI2CreateDrawable(ScreenPtr pScreen, DrawablePtr pDraw,
+		   drm_drawable_t *pDrmDrawable, unsigned int *head)
 {
     DRI2ScreenPtr	ds = DRI2GetScreen(pScreen);
     WindowPtr		pWin;
@@ -293,6 +293,7 @@ DRI2CreateDrawable(ScreenPtr pScreen,
 
     *pDrmDrawable = pPriv->drawable;
 
+    *head = ds->buffer->head;
     DRI2PostDrawableConfig(pDraw);
     DRI2PostBufferAttach(pDraw);
     DRI2ScreenCommitEvents(ds);
diff --git a/hw/xfree86/dri2/dri2.h b/hw/xfree86/dri2/dri2.h
index c848247..a319085 100644
--- a/hw/xfree86/dri2/dri2.h
+++ b/hw/xfree86/dri2/dri2.h
@@ -66,7 +66,8 @@ void DRI2Unlock(ScreenPtr pScreen);
 
 Bool DRI2CreateDrawable(ScreenPtr	 pScreen,
 			DrawablePtr	 pDraw,
-			drm_drawable_t	*pDrmDrawable);
+			drm_drawable_t	*pDrmDrawable,
+			unsigned int    *head);
 
 void DRI2DestroyDrawable(ScreenPtr	pScreen,
 			 DrawablePtr	pDraw);
commit 4aaf048b5a00ee4f91c2a1d026cd313f0207f0bc
Author: Kristian Høgsberg <krh at redhat.com>
Date:   Fri Mar 7 14:12:28 2008 -0500

    Fix DRI2 texture target for GLX_EXT_texture_from_pixmap.
    
    Thanks to Dennis Kasprzyk for pointing it out and for reminding me to
    commit it.
    (cherry picked from commit 9abaad115cb6245b12b2adb3552ace99b634ab4a)

diff --git a/GL/glx/glxdri2.c b/GL/glx/glxdri2.c
index b0082a0..27257d3 100644
--- a/GL/glx/glxdri2.c
+++ b/GL/glx/glxdri2.c
@@ -216,8 +216,6 @@ __glXDRIcontextForceCurrent(__GLXcontext *baseContext)
 
 #ifdef __DRI_TEX_BUFFER
 
-#define isPowerOfTwo(n) (((n) & ((n) - 1 )) == 0)
-
 static int
 __glXDRIbindTexImage(__GLXcontext *baseContext,
 		     int buffer,
@@ -228,26 +226,17 @@ __glXDRIbindTexImage(__GLXcontext *baseContext,
     PixmapPtr pixmap;
     __GLXDRIcontext *context = (__GLXDRIcontext *) baseContext;
     unsigned int flags;
-    int w, h, target;
 
     if (screen->texBuffer == NULL)
         return Success;
 
     pixmap = (PixmapPtr) glxPixmap->pDraw;
-    w = pixmap->drawable.width;
-    h = pixmap->drawable.height;
-
-    if (!isPowerOfTwo(w) || !isPowerOfTwo(h))
-	target = GL_TEXTURE_RECTANGLE_ARB;
-    else
-	target = GL_TEXTURE_2D;
-
     screen->texBuffer->setTexBuffer(&context->driContext,
-				    target,
+				    glxPixmap->target,
 				    DRI2GetPixmapHandle(pixmap, &flags),
 				    pixmap->drawable.depth,
 				    pixmap->devKind,
-				    h);
+				    pixmap->drawable.height);
 
     return Success;
 }


More information about the xorg-commit mailing list