|
|
9595469 |
diff -up mesa-20090909/include/GL/internal/dri_interface.h.da mesa-20090909/include/GL/internal/dri_interface.h
|
|
|
9595469 |
--- mesa-20090909/include/GL/internal/dri_interface.h.da 2009-09-09 09:43:36.000000000 +1000
|
|
|
9595469 |
+++ mesa-20090909/include/GL/internal/dri_interface.h 2009-09-09 08:56:48.000000000 +1000
|
|
Kristian Høgsberg |
8677323 |
@@ -262,10 +262,22 @@ struct __DRItexBufferExtensionRec {
|
|
Kristian Høgsberg |
8677323 |
* Used by drivers that implement DRI2
|
|
Kristian Høgsberg |
8677323 |
*/
|
|
Kristian Høgsberg |
8677323 |
#define __DRI2_FLUSH "DRI2_Flush"
|
|
Kristian Høgsberg |
8677323 |
-#define __DRI2_FLUSH_VERSION 1
|
|
Kristian Høgsberg |
8677323 |
+#define __DRI2_FLUSH_VERSION 2
|
|
Kristian Høgsberg |
8677323 |
struct __DRI2flushExtensionRec {
|
|
Kristian Høgsberg |
8677323 |
__DRIextension base;
|
|
Kristian Høgsberg |
8677323 |
void (*flush)(__DRIdrawable *drawable);
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
+ /**
|
|
Kristian Høgsberg |
8677323 |
+ * Flush all rendering queue in the driver to the drm and
|
|
Kristian Høgsberg |
8677323 |
+ * invalidate all buffers. The driver will call out to
|
|
Kristian Høgsberg |
8677323 |
+ * getBuffers/getBuffersWithFormat before it starts rendering
|
|
Kristian Høgsberg |
8677323 |
+ * again.
|
|
Kristian Høgsberg |
8677323 |
+ *
|
|
Kristian Høgsberg |
8677323 |
+ * \param drawable the drawable to flush and invalidate
|
|
Kristian Høgsberg |
8677323 |
+ *
|
|
Kristian Høgsberg |
8677323 |
+ * \since 2
|
|
Kristian Høgsberg |
8677323 |
+ */
|
|
Kristian Høgsberg |
8677323 |
+ void (*flushInvalidate)(__DRIdrawable *drawable);
|
|
Kristian Høgsberg |
8677323 |
};
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
|
|
|
9595469 |
diff -up mesa-20090909/src/glx/x11/dri2.c.da mesa-20090909/src/glx/x11/dri2.c
|
|
|
9595469 |
--- mesa-20090909/src/glx/x11/dri2.c.da 2009-09-09 09:43:36.000000000 +1000
|
|
|
9595469 |
+++ mesa-20090909/src/glx/x11/dri2.c 2009-09-09 08:56:48.000000000 +1000
|
|
|
9595469 |
@@ -377,3 +377,19 @@ DRI2CopyRegion(Display * dpy, XID drawab
|
|
|
9595469 |
UnlockDisplay(dpy);
|
|
|
9595469 |
SyncHandle();
|
|
Kristian Høgsberg |
8677323 |
}
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
+void DRI2SwapBuffers(Display *dpy, XID drawable)
|
|
Kristian Høgsberg |
8677323 |
+{
|
|
Kristian Høgsberg |
8677323 |
+ XExtDisplayInfo *info = DRI2FindDisplay(dpy);
|
|
Kristian Høgsberg |
8677323 |
+ xDRI2SwapBuffersReq *req;
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
+ XextSimpleCheckExtension (dpy, info, dri2ExtensionName);
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
+ LockDisplay(dpy);
|
|
Kristian Høgsberg |
8677323 |
+ GetReq(DRI2SwapBuffers, req);
|
|
Kristian Høgsberg |
8677323 |
+ req->reqType = info->codes->major_opcode;
|
|
Kristian Høgsberg |
8677323 |
+ req->dri2ReqType = X_DRI2SwapBuffers;
|
|
Kristian Høgsberg |
8677323 |
+ req->drawable = drawable;
|
|
Kristian Høgsberg |
8677323 |
+ UnlockDisplay(dpy);
|
|
Kristian Høgsberg |
8677323 |
+ SyncHandle();
|
|
Kristian Høgsberg |
8677323 |
+}
|
|
|
9595469 |
diff -up mesa-20090909/src/glx/x11/dri2_glx.c.da mesa-20090909/src/glx/x11/dri2_glx.c
|
|
|
9595469 |
--- mesa-20090909/src/glx/x11/dri2_glx.c.da 2009-09-09 09:43:36.000000000 +1000
|
|
|
9595469 |
+++ mesa-20090909/src/glx/x11/dri2_glx.c 2009-09-09 09:01:13.000000000 +1000
|
|
Kristian Høgsberg |
8677323 |
@@ -35,6 +35,7 @@
|
|
Kristian Høgsberg |
8677323 |
#include <X11/Xlib.h>
|
|
Kristian Høgsberg |
8677323 |
#include <X11/extensions/Xfixes.h>
|
|
Kristian Høgsberg |
8677323 |
#include <X11/extensions/Xdamage.h>
|
|
Kristian Høgsberg |
8677323 |
+#include "glapi.h"
|
|
Kristian Høgsberg |
8677323 |
#include "glxclient.h"
|
|
Kristian Høgsberg |
8677323 |
#include "glcontextmodes.h"
|
|
Kristian Høgsberg |
8677323 |
#include "xf86dri.h"
|
|
|
9595469 |
@@ -64,6 +65,8 @@ struct __GLXDRIdisplayPrivateRec
|
|
|
9595469 |
int driMajor;
|
|
|
9595469 |
int driMinor;
|
|
|
9595469 |
int driPatch;
|
|
Kristian Høgsberg |
8677323 |
+
|
|
|
9595469 |
+ int swapAvailable;
|
|
Kristian Høgsberg |
8677323 |
};
|
|
Kristian Høgsberg |
8677323 |
|
|
|
9595469 |
struct __GLXDRIcontextPrivateRec
|
|
|
9595469 |
@@ -232,14 +235,6 @@ dri2CopySubBuffer(__GLXDRIdrawable * pdr
|
|
Kristian Høgsberg |
8677323 |
}
|
|
Kristian Høgsberg |
8677323 |
|
|
|
9595469 |
static void
|
|
|
9595469 |
-dri2SwapBuffers(__GLXDRIdrawable * pdraw)
|
|
Kristian Høgsberg |
8677323 |
-{
|
|
|
9595469 |
- __GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw;
|
|
Kristian Høgsberg |
8677323 |
-
|
|
|
9595469 |
- dri2CopySubBuffer(pdraw, 0, 0, priv->width, priv->height);
|
|
Kristian Høgsberg |
8677323 |
-}
|
|
Kristian Høgsberg |
8677323 |
-
|
|
|
9595469 |
-static void
|
|
|
9595469 |
dri2WaitX(__GLXDRIdrawable * pdraw)
|
|
Kristian Høgsberg |
8677323 |
{
|
|
|
9595469 |
__GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw;
|
|
|
9595469 |
@@ -342,6 +337,31 @@ process_buffers(__GLXDRIdrawablePrivate
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
}
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
+static void dri2SwapBuffers(__GLXDRIdrawable *pdraw)
|
|
Kristian Høgsberg |
8677323 |
+{
|
|
Kristian Høgsberg |
8677323 |
+ __GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw;
|
|
Kristian Høgsberg |
8677323 |
+ __GLXdisplayPrivate *dpyPriv = __glXInitialize(priv->base.psc->dpy);
|
|
Kristian Høgsberg |
8677323 |
+ __GLXDRIdisplayPrivate *pdp =
|
|
Kristian Høgsberg |
8677323 |
+ (__GLXDRIdisplayPrivate *)dpyPriv->dri2Display;
|
|
Kristian Høgsberg |
8677323 |
+ __GLXscreenConfigs *psc = pdraw->psc;
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
+#ifdef __DRI2_FLUSH
|
|
Kristian Høgsberg |
8677323 |
+ if (pdraw->psc->f)
|
|
Kristian Høgsberg |
8677323 |
+ (*pdraw->psc->f->flush)(pdraw->driDrawable);
|
|
Kristian Høgsberg |
8677323 |
+#endif
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
+ /* Old servers can't handle swapbuffers */
|
|
Kristian Høgsberg |
8677323 |
+ if (!pdp->swapAvailable)
|
|
Kristian Høgsberg |
8677323 |
+ return dri2CopySubBuffer(pdraw, 0, 0, priv->width, priv->height);
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
+ DRI2SwapBuffers(pdraw->psc->dpy, pdraw->drawable);
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
+#if __DRI2_FLUSH_VERSION >= 2
|
|
Kristian Høgsberg |
8677323 |
+ if (pdraw->psc->f)
|
|
Kristian Høgsberg |
8677323 |
+ (*pdraw->psc->f->flushInvalidate)(pdraw->driDrawable);
|
|
Kristian Høgsberg |
8677323 |
+#endif
|
|
Kristian Høgsberg |
8677323 |
+}
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
static __DRIbuffer *
|
|
|
9595469 |
dri2GetBuffers(__DRIdrawable * driDrawable,
|
|
|
9595469 |
int *width, int *height,
|
|
|
9595469 |
@@ -559,6 +579,9 @@ dri2CreateDisplay(Display * dpy)
|
|
|
9595469 |
}
|
|
|
9595469 |
|
|
|
9595469 |
pdp->driPatch = 0;
|
|
|
9595469 |
+ pdp->swapAvailable = 0;
|
|
|
9595469 |
+ if (pdp->driMinor >= 2)
|
|
|
9595469 |
+ pdp->swapAvailable = 1;
|
|
Kristian Høgsberg |
8677323 |
|
|
|
9595469 |
pdp->base.destroyDisplay = dri2DestroyDisplay;
|
|
|
9595469 |
pdp->base.createScreen = dri2CreateScreen;
|
|
|
9595469 |
diff -up mesa-20090909/src/glx/x11/dri2.h.da mesa-20090909/src/glx/x11/dri2.h
|
|
|
9595469 |
--- mesa-20090909/src/glx/x11/dri2.h.da 2009-09-09 09:43:36.000000000 +1000
|
|
|
9595469 |
+++ mesa-20090909/src/glx/x11/dri2.h 2009-09-09 08:56:48.000000000 +1000
|
|
|
9595469 |
@@ -85,4 +85,7 @@ DRI2CopyRegion(Display * dpy, XID drawab
|
|
|
9595469 |
XserverRegion region,
|
|
|
9595469 |
CARD32 dest, CARD32 src);
|
|
Kristian Høgsberg |
8677323 |
|
|
|
9595469 |
+extern void
|
|
|
9595469 |
+DRI2SwapBuffers(Display *dpy, XID drawable);
|
|
|
9595469 |
+
|
|
|
9595469 |
#endif
|
|
|
9595469 |
diff -up mesa-20090909/src/mesa/drivers/dri/common/dri_util.c.da mesa-20090909/src/mesa/drivers/dri/common/dri_util.c
|
|
|
9595469 |
--- mesa-20090909/src/mesa/drivers/dri/common/dri_util.c.da 2009-09-09 09:43:36.000000000 +1000
|
|
|
9595469 |
+++ mesa-20090909/src/mesa/drivers/dri/common/dri_util.c 2009-09-09 08:56:48.000000000 +1000
|
|
|
9595469 |
@@ -453,6 +453,7 @@ driCreateNewDrawable(__DRIscreen *psp, c
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
pdp->driScreenPriv = psp;
|
|
Kristian Høgsberg |
8677323 |
pdp->driContextPriv = &psp->dummyContextPriv;
|
|
Kristian Høgsberg |
8677323 |
+ pdp->validBuffers = GL_FALSE;
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
if (!(*psp->DriverAPI.CreateBuffer)(psp, pdp, &config->modes,
|
|
Kristian Høgsberg |
8677323 |
renderType == GLX_PIXMAP_BIT)) {
|
|
|
9595469 |
diff -up mesa-20090909/src/mesa/drivers/dri/common/dri_util.h.da mesa-20090909/src/mesa/drivers/dri/common/dri_util.h
|
|
|
9595469 |
--- mesa-20090909/src/mesa/drivers/dri/common/dri_util.h.da 2009-09-09 09:43:36.000000000 +1000
|
|
|
9595469 |
+++ mesa-20090909/src/mesa/drivers/dri/common/dri_util.h 2009-09-09 08:56:48.000000000 +1000
|
|
Kristian Høgsberg |
8677323 |
@@ -380,6 +380,8 @@ struct __DRIdrawableRec {
|
|
Kristian Høgsberg |
8677323 |
* GLX_MESA_swap_control.
|
|
Kristian Høgsberg |
8677323 |
*/
|
|
Kristian Høgsberg |
8677323 |
unsigned int swap_interval;
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
+ GLboolean validBuffers;
|
|
Kristian Høgsberg |
8677323 |
};
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
/**
|
|
|
9595469 |
diff -up mesa-20090909/src/mesa/drivers/dri/intel/intel_context.c.da mesa-20090909/src/mesa/drivers/dri/intel/intel_context.c
|
|
|
9595469 |
--- mesa-20090909/src/mesa/drivers/dri/intel/intel_context.c.da 2009-09-09 09:43:36.000000000 +1000
|
|
|
9595469 |
+++ mesa-20090909/src/mesa/drivers/dri/intel/intel_context.c 2009-09-09 08:56:48.000000000 +1000
|
|
|
9595469 |
@@ -72,8 +72,6 @@ int INTEL_DEBUG = (0);
|
|
Kristian Høgsberg |
8677323 |
#define DRIVER_DATE_GEM "GEM " DRIVER_DATE
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
-static void intel_flush(GLcontext *ctx, GLboolean needs_mi_flush);
|
|
Kristian Høgsberg |
8677323 |
-
|
|
Kristian Høgsberg |
8677323 |
static const GLubyte *
|
|
Kristian Høgsberg |
8677323 |
intelGetString(GLcontext * ctx, GLenum name)
|
|
Kristian Høgsberg |
8677323 |
{
|
|
|
9595469 |
@@ -391,6 +389,7 @@ intel_update_renderbuffers(__DRIcontext
|
|
Kristian Høgsberg |
8677323 |
}
|
|
Kristian Høgsberg |
8677323 |
}
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
+ drawable->validBuffers = GL_TRUE;
|
|
Kristian Høgsberg |
8677323 |
driUpdateFramebufferSize(&intel->ctx, drawable);
|
|
Kristian Høgsberg |
8677323 |
}
|
|
Kristian Høgsberg |
8677323 |
|
|
|
9595469 |
@@ -478,7 +477,7 @@ intelInvalidateState(GLcontext * ctx, GL
|
|
Kristian Høgsberg |
8677323 |
intel->vtbl.invalidate_state( intel, new_state );
|
|
Kristian Høgsberg |
8677323 |
}
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
-static void
|
|
Kristian Høgsberg |
8677323 |
+void
|
|
Kristian Høgsberg |
8677323 |
intel_flush(GLcontext *ctx, GLboolean needs_mi_flush)
|
|
Kristian Høgsberg |
8677323 |
{
|
|
Kristian Høgsberg |
8677323 |
struct intel_context *intel = intel_context(ctx);
|
|
|
9595469 |
@@ -936,11 +935,7 @@ intelMakeCurrent(__DRIcontextPrivate * d
|
|
Kristian Høgsberg |
8677323 |
(struct intel_framebuffer *) driDrawPriv->driverPrivate;
|
|
Kristian Høgsberg |
8677323 |
GLframebuffer *readFb = (GLframebuffer *) driReadPriv->driverPrivate;
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
- if (driContextPriv->driScreenPriv->dri2.enabled) {
|
|
Kristian Høgsberg |
8677323 |
- intel_update_renderbuffers(driContextPriv, driDrawPriv);
|
|
Kristian Høgsberg |
8677323 |
- if (driDrawPriv != driReadPriv)
|
|
Kristian Høgsberg |
8677323 |
- intel_update_renderbuffers(driContextPriv, driReadPriv);
|
|
Kristian Høgsberg |
8677323 |
- } else {
|
|
Kristian Høgsberg |
8677323 |
+ if (!driContextPriv->driScreenPriv->dri2.enabled) {
|
|
Kristian Høgsberg |
8677323 |
/* XXX FBO temporary fix-ups! These are released in
|
|
Kristian Høgsberg |
8677323 |
* intelDextroyContext(), above. Changes here should be
|
|
Kristian Høgsberg |
8677323 |
* reflected there.
|
|
|
9595469 |
@@ -1095,6 +1090,10 @@ void LOCK_HARDWARE( struct intel_context
|
|
Kristian Høgsberg |
8677323 |
if (intel->driDrawable) {
|
|
Kristian Høgsberg |
8677323 |
intel_fb = intel->driDrawable->driverPrivate;
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
+ if (!intel->driDrawable->validBuffers)
|
|
Kristian Høgsberg |
8677323 |
+ intel_update_renderbuffers(intel->driContext,
|
|
Kristian Høgsberg |
8677323 |
+ intel->driDrawable);
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
if (intel_fb)
|
|
Kristian Høgsberg |
8677323 |
intel_rb =
|
|
Kristian Høgsberg |
8677323 |
intel_get_renderbuffer(&intel_fb->Base,
|
|
|
9595469 |
diff -up mesa-20090909/src/mesa/drivers/dri/intel/intel_context.h.da mesa-20090909/src/mesa/drivers/dri/intel/intel_context.h
|
|
|
9595469 |
--- mesa-20090909/src/mesa/drivers/dri/intel/intel_context.h.da 2009-09-09 09:43:36.000000000 +1000
|
|
|
9595469 |
+++ mesa-20090909/src/mesa/drivers/dri/intel/intel_context.h 2009-09-09 08:56:48.000000000 +1000
|
|
|
9595469 |
@@ -473,6 +473,7 @@ extern void intelGetLock(struct intel_co
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
extern void intelFinish(GLcontext * ctx);
|
|
Kristian Høgsberg |
8677323 |
extern void intelFlush(GLcontext * ctx);
|
|
Kristian Høgsberg |
8677323 |
+extern void intel_flush(GLcontext * ctx, GLboolean needs_mi_flush);
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
extern void intelInitDriverFunctions(struct dd_function_table *functions);
|
|
Kristian Høgsberg |
8677323 |
|
|
|
9595469 |
diff -up mesa-20090909/src/mesa/drivers/dri/intel/intel_extensions.h.da mesa-20090909/src/mesa/drivers/dri/intel/intel_extensions.h
|
|
|
9595469 |
--- mesa-20090909/src/mesa/drivers/dri/intel/intel_extensions.h.da 2009-09-09 09:43:36.000000000 +1000
|
|
|
9595469 |
+++ mesa-20090909/src/mesa/drivers/dri/intel/intel_extensions.h 2009-09-09 08:56:48.000000000 +1000
|
|
Kristian Høgsberg |
8677323 |
@@ -32,5 +32,8 @@
|
|
Kristian Høgsberg |
8677323 |
extern void
|
|
Kristian Høgsberg |
8677323 |
intelInitExtensions(GLcontext *ctx, GLboolean enable_imaging);
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
+extern void
|
|
Kristian Høgsberg |
8677323 |
+intelFlushDrawable(__DRIdrawable *drawable);
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
#endif
|
|
|
9595469 |
diff -up mesa-20090909/src/mesa/drivers/dri/intel/intel_screen.c.da mesa-20090909/src/mesa/drivers/dri/intel/intel_screen.c
|
|
|
9595469 |
--- mesa-20090909/src/mesa/drivers/dri/intel/intel_screen.c.da 2009-09-09 08:56:16.000000000 +1000
|
|
|
9595469 |
+++ mesa-20090909/src/mesa/drivers/dri/intel/intel_screen.c 2009-09-09 08:56:48.000000000 +1000
|
|
|
9595469 |
@@ -229,6 +229,28 @@ static const __DRItexBufferExtension int
|
|
Kristian Høgsberg |
8677323 |
intelSetTexBuffer2,
|
|
Kristian Høgsberg |
8677323 |
};
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
+static void
|
|
Kristian Høgsberg |
8677323 |
+intelDRI2Flush(__DRIdrawable *drawable)
|
|
Kristian Høgsberg |
8677323 |
+{
|
|
Kristian Høgsberg |
8677323 |
+ struct intel_context *intel = drawable->driContextPriv->driverPrivate;
|
|
Kristian Høgsberg |
8677323 |
+ GLcontext *ctx = &intel->ctx;
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
+ intel_flush(ctx, GL_TRUE);
|
|
Kristian Høgsberg |
8677323 |
+}
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
+static void
|
|
Kristian Høgsberg |
8677323 |
+intelDRI2FlushInvalidate(__DRIdrawable *drawable)
|
|
Kristian Høgsberg |
8677323 |
+{
|
|
Kristian Høgsberg |
8677323 |
+ intelDRI2Flush(drawable);
|
|
Kristian Høgsberg |
8677323 |
+ drawable->validBuffers = GL_FALSE;
|
|
Kristian Høgsberg |
8677323 |
+}
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
+static const struct __DRI2flushExtensionRec intelFlushExtension = {
|
|
Kristian Høgsberg |
8677323 |
+ { __DRI2_FLUSH, __DRI2_FLUSH_VERSION },
|
|
Kristian Høgsberg |
8677323 |
+ intelDRI2Flush,
|
|
Kristian Høgsberg |
8677323 |
+ intelDRI2FlushInvalidate,
|
|
Kristian Høgsberg |
8677323 |
+};
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
static const __DRIextension *intelScreenExtensions[] = {
|
|
Kristian Høgsberg |
8677323 |
&driReadDrawableExtension,
|
|
Kristian Høgsberg |
8677323 |
&driCopySubBufferExtension.base,
|
|
|
9595469 |
@@ -237,6 +259,7 @@ static const __DRIextension *intelScreen
|
|
Kristian Høgsberg |
8677323 |
&driMediaStreamCounterExtension.base,
|
|
Kristian Høgsberg |
8677323 |
&intelTexOffsetExtension.base,
|
|
Kristian Høgsberg |
8677323 |
&intelTexBufferExtension.base,
|
|
Kristian Høgsberg |
8677323 |
+ &intelFlushExtension.base,
|
|
Kristian Høgsberg |
8677323 |
NULL
|
|
Kristian Høgsberg |
8677323 |
};
|
|
Kristian Høgsberg |
8677323 |
|
|
|
9595469 |
@@ -517,11 +540,9 @@ intelFillInModes(__DRIscreenPrivate *psp
|
|
Kristian Høgsberg |
8677323 |
unsigned back_buffer_factor;
|
|
Kristian Høgsberg |
8677323 |
int i;
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
- /* GLX_SWAP_COPY_OML is only supported because the Intel driver doesn't
|
|
Kristian Høgsberg |
8677323 |
- * support pageflipping at all.
|
|
Kristian Høgsberg |
8677323 |
- */
|
|
Kristian Høgsberg |
8677323 |
static const GLenum back_buffer_modes[] = {
|
|
Kristian Høgsberg |
8677323 |
- GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML
|
|
Kristian Høgsberg |
8677323 |
+ GLX_NONE, GLX_SWAP_UNDEFINED_OML,
|
|
Kristian Høgsberg |
8677323 |
+ GLX_SWAP_EXCHANGE_OML, GLX_SWAP_COPY_OML
|
|
Kristian Høgsberg |
8677323 |
};
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
uint8_t depth_bits_array[3];
|
|
|
9595469 |
@@ -742,11 +763,10 @@ __DRIconfig **intelInitScreen2(__DRIscre
|
|
Kristian Høgsberg |
8677323 |
intelScreenPrivate *intelScreen;
|
|
Kristian Høgsberg |
8677323 |
GLenum fb_format[3];
|
|
Kristian Høgsberg |
8677323 |
GLenum fb_type[3];
|
|
Kristian Høgsberg |
8677323 |
- /* GLX_SWAP_COPY_OML is only supported because the Intel driver doesn't
|
|
Kristian Høgsberg |
8677323 |
- * support pageflipping at all.
|
|
Kristian Høgsberg |
8677323 |
- */
|
|
Kristian Høgsberg |
8677323 |
+
|
|
Kristian Høgsberg |
8677323 |
static const GLenum back_buffer_modes[] = {
|
|
Kristian Høgsberg |
8677323 |
- GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML
|
|
Kristian Høgsberg |
8677323 |
+ GLX_NONE, GLX_SWAP_UNDEFINED_OML,
|
|
Kristian Høgsberg |
8677323 |
+ GLX_SWAP_EXCHANGE_OML, GLX_SWAP_COPY_OML
|
|
Kristian Høgsberg |
8677323 |
};
|
|
Kristian Høgsberg |
8677323 |
uint8_t depth_bits[4], stencil_bits[4], msaa_samples_array[1];
|
|
Kristian Høgsberg |
8677323 |
int color;
|
|
|
9595469 |
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
|
|
|
9595469 |
--- mesa-20090909/src/mesa/drivers/dri/intel/intel_tex_image.c.da 2009-09-09 09:43:36.000000000 +1000
|
|
|
9595469 |
+++ mesa-20090909/src/mesa/drivers/dri/intel/intel_tex_image.c 2009-09-09 08:56:48.000000000 +1000
|
|
|
9595469 |
@@ -747,7 +747,8 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx
|
|
Kristian Høgsberg |
8677323 |
if (!intelObj)
|
|
Kristian Høgsberg |
8677323 |
return;
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
- intel_update_renderbuffers(pDRICtx, dPriv);
|
|
Kristian Høgsberg |
8677323 |
+ if (!dPriv->validBuffers)
|
|
Kristian Høgsberg |
8677323 |
+ intel_update_renderbuffers(pDRICtx, dPriv);
|
|
Kristian Høgsberg |
8677323 |
|
|
Kristian Høgsberg |
8677323 |
rb = intel_fb->color_rb[0];
|
|
Kristian Høgsberg |
8677323 |
/* If the region isn't set, then intel_update_renderbuffers was unable
|