From 2dcc0c89acf228947dbed7cf7f530627a129e116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Thu, 17 Sep 2009 20:35:20 +0000 Subject: [PATCH] - Back out page flip patch. --- mesa-7.6-dri2-page-flip.patch | 319 ---------------------------------- mesa.spec | 7 +- 2 files changed, 4 insertions(+), 322 deletions(-) delete mode 100644 mesa-7.6-dri2-page-flip.patch diff --git a/mesa-7.6-dri2-page-flip.patch b/mesa-7.6-dri2-page-flip.patch deleted file mode 100644 index ca25691..0000000 --- a/mesa-7.6-dri2-page-flip.patch +++ /dev/null @@ -1,319 +0,0 @@ -diff -up mesa-20090909/include/GL/internal/dri_interface.h.da mesa-20090909/include/GL/internal/dri_interface.h ---- mesa-20090909/include/GL/internal/dri_interface.h.da 2009-09-09 09:43:36.000000000 +1000 -+++ mesa-20090909/include/GL/internal/dri_interface.h 2009-09-09 08:56:48.000000000 +1000 -@@ -262,10 +262,22 @@ struct __DRItexBufferExtensionRec { - * Used by drivers that implement DRI2 - */ - #define __DRI2_FLUSH "DRI2_Flush" --#define __DRI2_FLUSH_VERSION 1 -+#define __DRI2_FLUSH_VERSION 2 - struct __DRI2flushExtensionRec { - __DRIextension base; - void (*flush)(__DRIdrawable *drawable); -+ -+ /** -+ * Flush all rendering queue in the driver to the drm and -+ * invalidate all buffers. The driver will call out to -+ * getBuffers/getBuffersWithFormat before it starts rendering -+ * again. -+ * -+ * \param drawable the drawable to flush and invalidate -+ * -+ * \since 2 -+ */ -+ void (*flushInvalidate)(__DRIdrawable *drawable); - }; - - -diff -up mesa-20090909/src/glx/x11/dri2.c.da mesa-20090909/src/glx/x11/dri2.c ---- mesa-20090909/src/glx/x11/dri2.c.da 2009-09-09 09:43:36.000000000 +1000 -+++ mesa-20090909/src/glx/x11/dri2.c 2009-09-09 08:56:48.000000000 +1000 -@@ -377,3 +377,19 @@ DRI2CopyRegion(Display * dpy, XID drawab - UnlockDisplay(dpy); - SyncHandle(); - } -+ -+void DRI2SwapBuffers(Display *dpy, XID drawable) -+{ -+ XExtDisplayInfo *info = DRI2FindDisplay(dpy); -+ xDRI2SwapBuffersReq *req; -+ -+ XextSimpleCheckExtension (dpy, info, dri2ExtensionName); -+ -+ LockDisplay(dpy); -+ GetReq(DRI2SwapBuffers, req); -+ req->reqType = info->codes->major_opcode; -+ req->dri2ReqType = X_DRI2SwapBuffers; -+ req->drawable = drawable; -+ UnlockDisplay(dpy); -+ SyncHandle(); -+} -diff -up mesa-20090909/src/glx/x11/dri2_glx.c.da mesa-20090909/src/glx/x11/dri2_glx.c ---- mesa-20090909/src/glx/x11/dri2_glx.c.da 2009-09-09 09:43:36.000000000 +1000 -+++ mesa-20090909/src/glx/x11/dri2_glx.c 2009-09-09 09:01:13.000000000 +1000 -@@ -35,6 +35,7 @@ - #include - #include - #include -+#include "glapi.h" - #include "glxclient.h" - #include "glcontextmodes.h" - #include "xf86dri.h" -@@ -64,6 +65,8 @@ struct __GLXDRIdisplayPrivateRec - int driMajor; - int driMinor; - int driPatch; -+ -+ int swapAvailable; - }; - - struct __GLXDRIcontextPrivateRec -@@ -232,14 +235,6 @@ dri2CopySubBuffer(__GLXDRIdrawable * pdr - } - - static void --dri2SwapBuffers(__GLXDRIdrawable * pdraw) --{ -- __GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw; -- -- dri2CopySubBuffer(pdraw, 0, 0, priv->width, priv->height); --} -- --static void - dri2WaitX(__GLXDRIdrawable * pdraw) - { - __GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw; -@@ -342,6 +337,31 @@ process_buffers(__GLXDRIdrawablePrivate - - } - -+static void dri2SwapBuffers(__GLXDRIdrawable *pdraw) -+{ -+ __GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw; -+ __GLXdisplayPrivate *dpyPriv = __glXInitialize(priv->base.psc->dpy); -+ __GLXDRIdisplayPrivate *pdp = -+ (__GLXDRIdisplayPrivate *)dpyPriv->dri2Display; -+ __GLXscreenConfigs *psc = pdraw->psc; -+ -+#ifdef __DRI2_FLUSH -+ if (pdraw->psc->f) -+ (*pdraw->psc->f->flush)(pdraw->driDrawable); -+#endif -+ -+ /* Old servers can't handle swapbuffers */ -+ if (!pdp->swapAvailable) -+ return dri2CopySubBuffer(pdraw, 0, 0, priv->width, priv->height); -+ -+ DRI2SwapBuffers(pdraw->psc->dpy, pdraw->drawable); -+ -+#if __DRI2_FLUSH_VERSION >= 2 -+ if (pdraw->psc->f) -+ (*pdraw->psc->f->flushInvalidate)(pdraw->driDrawable); -+#endif -+} -+ - static __DRIbuffer * - dri2GetBuffers(__DRIdrawable * driDrawable, - int *width, int *height, -@@ -559,6 +579,9 @@ dri2CreateDisplay(Display * dpy) - } - - pdp->driPatch = 0; -+ pdp->swapAvailable = 0; -+ if (pdp->driMinor >= 2) -+ pdp->swapAvailable = 1; - - pdp->base.destroyDisplay = dri2DestroyDisplay; - pdp->base.createScreen = dri2CreateScreen; -diff -up mesa-20090909/src/glx/x11/dri2.h.da mesa-20090909/src/glx/x11/dri2.h ---- mesa-20090909/src/glx/x11/dri2.h.da 2009-09-09 09:43:36.000000000 +1000 -+++ mesa-20090909/src/glx/x11/dri2.h 2009-09-09 08:56:48.000000000 +1000 -@@ -85,4 +85,7 @@ DRI2CopyRegion(Display * dpy, XID drawab - XserverRegion region, - CARD32 dest, CARD32 src); - -+extern void -+DRI2SwapBuffers(Display *dpy, XID drawable); -+ - #endif -diff -up mesa-20090909/src/mesa/drivers/dri/common/dri_util.c.da mesa-20090909/src/mesa/drivers/dri/common/dri_util.c ---- mesa-20090909/src/mesa/drivers/dri/common/dri_util.c.da 2009-09-09 09:43:36.000000000 +1000 -+++ mesa-20090909/src/mesa/drivers/dri/common/dri_util.c 2009-09-09 08:56:48.000000000 +1000 -@@ -453,6 +453,7 @@ driCreateNewDrawable(__DRIscreen *psp, c - - pdp->driScreenPriv = psp; - pdp->driContextPriv = &psp->dummyContextPriv; -+ pdp->validBuffers = GL_FALSE; - - if (!(*psp->DriverAPI.CreateBuffer)(psp, pdp, &config->modes, - renderType == GLX_PIXMAP_BIT)) { -diff -up mesa-20090909/src/mesa/drivers/dri/common/dri_util.h.da mesa-20090909/src/mesa/drivers/dri/common/dri_util.h ---- mesa-20090909/src/mesa/drivers/dri/common/dri_util.h.da 2009-09-09 09:43:36.000000000 +1000 -+++ mesa-20090909/src/mesa/drivers/dri/common/dri_util.h 2009-09-09 08:56:48.000000000 +1000 -@@ -380,6 +380,8 @@ struct __DRIdrawableRec { - * GLX_MESA_swap_control. - */ - unsigned int swap_interval; -+ -+ GLboolean validBuffers; - }; - - /** -diff -up mesa-20090909/src/mesa/drivers/dri/intel/intel_context.c.da mesa-20090909/src/mesa/drivers/dri/intel/intel_context.c ---- mesa-20090909/src/mesa/drivers/dri/intel/intel_context.c.da 2009-09-09 09:43:36.000000000 +1000 -+++ mesa-20090909/src/mesa/drivers/dri/intel/intel_context.c 2009-09-09 08:56:48.000000000 +1000 -@@ -72,8 +72,6 @@ int INTEL_DEBUG = (0); - #define DRIVER_DATE_GEM "GEM " DRIVER_DATE - - --static void intel_flush(GLcontext *ctx, GLboolean needs_mi_flush); -- - static const GLubyte * - intelGetString(GLcontext * ctx, GLenum name) - { -@@ -391,6 +389,7 @@ intel_update_renderbuffers(__DRIcontext - } - } - -+ drawable->validBuffers = GL_TRUE; - driUpdateFramebufferSize(&intel->ctx, drawable); - } - -@@ -478,7 +477,7 @@ intelInvalidateState(GLcontext * ctx, GL - intel->vtbl.invalidate_state( intel, new_state ); - } - --static void -+void - intel_flush(GLcontext *ctx, GLboolean needs_mi_flush) - { - struct intel_context *intel = intel_context(ctx); -@@ -936,11 +935,7 @@ intelMakeCurrent(__DRIcontextPrivate * d - (struct intel_framebuffer *) driDrawPriv->driverPrivate; - GLframebuffer *readFb = (GLframebuffer *) driReadPriv->driverPrivate; - -- if (driContextPriv->driScreenPriv->dri2.enabled) { -- intel_update_renderbuffers(driContextPriv, driDrawPriv); -- if (driDrawPriv != driReadPriv) -- intel_update_renderbuffers(driContextPriv, driReadPriv); -- } else { -+ if (!driContextPriv->driScreenPriv->dri2.enabled) { - /* XXX FBO temporary fix-ups! These are released in - * intelDextroyContext(), above. Changes here should be - * reflected there. -@@ -1095,6 +1090,10 @@ void LOCK_HARDWARE( struct intel_context - if (intel->driDrawable) { - intel_fb = intel->driDrawable->driverPrivate; - -+ if (!intel->driDrawable->validBuffers) -+ intel_update_renderbuffers(intel->driContext, -+ intel->driDrawable); -+ - if (intel_fb) - intel_rb = - intel_get_renderbuffer(&intel_fb->Base, -diff -up mesa-20090909/src/mesa/drivers/dri/intel/intel_context.h.da mesa-20090909/src/mesa/drivers/dri/intel/intel_context.h ---- mesa-20090909/src/mesa/drivers/dri/intel/intel_context.h.da 2009-09-09 09:43:36.000000000 +1000 -+++ mesa-20090909/src/mesa/drivers/dri/intel/intel_context.h 2009-09-09 08:56:48.000000000 +1000 -@@ -473,6 +473,7 @@ extern void intelGetLock(struct intel_co - - extern void intelFinish(GLcontext * ctx); - extern void intelFlush(GLcontext * ctx); -+extern void intel_flush(GLcontext * ctx, GLboolean needs_mi_flush); - - extern void intelInitDriverFunctions(struct dd_function_table *functions); - -diff -up mesa-20090909/src/mesa/drivers/dri/intel/intel_extensions.h.da mesa-20090909/src/mesa/drivers/dri/intel/intel_extensions.h ---- mesa-20090909/src/mesa/drivers/dri/intel/intel_extensions.h.da 2009-09-09 09:43:36.000000000 +1000 -+++ mesa-20090909/src/mesa/drivers/dri/intel/intel_extensions.h 2009-09-09 08:56:48.000000000 +1000 -@@ -32,5 +32,8 @@ - extern void - intelInitExtensions(GLcontext *ctx, GLboolean enable_imaging); - -+extern void -+intelFlushDrawable(__DRIdrawable *drawable); -+ - - #endif -diff -up mesa-20090909/src/mesa/drivers/dri/intel/intel_screen.c.da mesa-20090909/src/mesa/drivers/dri/intel/intel_screen.c ---- mesa-20090909/src/mesa/drivers/dri/intel/intel_screen.c.da 2009-09-09 08:56:16.000000000 +1000 -+++ mesa-20090909/src/mesa/drivers/dri/intel/intel_screen.c 2009-09-09 08:56:48.000000000 +1000 -@@ -229,6 +229,28 @@ static const __DRItexBufferExtension int - intelSetTexBuffer2, - }; - -+static void -+intelDRI2Flush(__DRIdrawable *drawable) -+{ -+ struct intel_context *intel = drawable->driContextPriv->driverPrivate; -+ GLcontext *ctx = &intel->ctx; -+ -+ intel_flush(ctx, GL_TRUE); -+} -+ -+static void -+intelDRI2FlushInvalidate(__DRIdrawable *drawable) -+{ -+ intelDRI2Flush(drawable); -+ drawable->validBuffers = GL_FALSE; -+} -+ -+static const struct __DRI2flushExtensionRec intelFlushExtension = { -+ { __DRI2_FLUSH, __DRI2_FLUSH_VERSION }, -+ intelDRI2Flush, -+ intelDRI2FlushInvalidate, -+}; -+ - static const __DRIextension *intelScreenExtensions[] = { - &driReadDrawableExtension, - &driCopySubBufferExtension.base, -@@ -237,6 +259,7 @@ static const __DRIextension *intelScreen - &driMediaStreamCounterExtension.base, - &intelTexOffsetExtension.base, - &intelTexBufferExtension.base, -+ &intelFlushExtension.base, - NULL - }; - -@@ -517,11 +540,9 @@ intelFillInModes(__DRIscreenPrivate *psp - unsigned back_buffer_factor; - int i; - -- /* GLX_SWAP_COPY_OML is only supported because the Intel driver doesn't -- * support pageflipping at all. -- */ - static const GLenum back_buffer_modes[] = { -- GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML -+ GLX_NONE, GLX_SWAP_UNDEFINED_OML, -+ GLX_SWAP_EXCHANGE_OML, GLX_SWAP_COPY_OML - }; - - uint8_t depth_bits_array[3]; -@@ -742,11 +763,10 @@ __DRIconfig **intelInitScreen2(__DRIscre - intelScreenPrivate *intelScreen; - GLenum fb_format[3]; - GLenum fb_type[3]; -- /* GLX_SWAP_COPY_OML is only supported because the Intel driver doesn't -- * support pageflipping at all. -- */ -+ - static const GLenum back_buffer_modes[] = { -- GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML -+ GLX_NONE, GLX_SWAP_UNDEFINED_OML, -+ GLX_SWAP_EXCHANGE_OML, GLX_SWAP_COPY_OML - }; - uint8_t depth_bits[4], stencil_bits[4], msaa_samples_array[1]; - int color; -diff -up mesa-20090909/src/mesa/drivers/dri/intel/intel_tex_image.c.da mesa-20090909/src/mesa/drivers/dri/intel/intel_tex_image.c ---- mesa-20090909/src/mesa/drivers/dri/intel/intel_tex_image.c.da 2009-09-09 09:43:36.000000000 +1000 -+++ mesa-20090909/src/mesa/drivers/dri/intel/intel_tex_image.c 2009-09-09 08:56:48.000000000 +1000 -@@ -747,7 +747,8 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx - if (!intelObj) - return; - -- intel_update_renderbuffers(pDRICtx, dPriv); -+ if (!dPriv->validBuffers) -+ intel_update_renderbuffers(pDRICtx, dPriv); - - rb = intel_fb->color_rb[0]; - /* If the region isn't set, then intel_update_renderbuffers was unable diff --git a/mesa.spec b/mesa.spec index e1e51cb..058deac 100644 --- a/mesa.spec +++ b/mesa.spec @@ -21,7 +21,7 @@ Summary: Mesa graphics libraries Name: mesa Version: 7.6 -Release: 0.11%{?dist} +Release: 0.12%{?dist} License: MIT Group: System Environment/Libraries URL: http://www.mesa3d.org @@ -47,7 +47,6 @@ Patch10: r600-fix-tfp.patch Patch13: mesa-7.5-sparc64.patch -Patch20: mesa-7.6-dri2-page-flip.patch Patch30: mesa-7.6-hush-vblank-warning.patch BuildRequires: pkgconfig autoconf automake @@ -181,7 +180,6 @@ This package provides some demo applications for testing Mesa. %patch9 -p1 -b .intel-vbl %patch10 -p1 -b .r600_tfp %patch13 -p1 -b .sparc64 -%patch20 -p1 -b .dri2-page-flip %patch30 -p1 -b .vblank-warning # Hack the demos to use installed data files @@ -389,6 +387,9 @@ rm -rf $RPM_BUILD_ROOT %{demodir} %changelog +* Thu Sep 17 2009 Kristian Høgsberg - 7.6-0.12 +- Back out page flip patch. + * Wed Sep 09 2009 Dave Airlie 7.6-0.11 - r600 fix for TFP from irc