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