From fb67b1609e211ed16828e10ffc1c36e54f655112 Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Wed, 11 Jul 2007 17:30:01 +0200 Subject: [PATCH] remove bogus assertion, change drawable updates don't update driDrawable information until later at all (blit needs fixing). --- src/mesa/drivers/dri/i915tex/intel_buffers.c | 17 ++++++++++++----- src/mesa/drivers/dri/i915tex/intel_context.c | 5 ++++- src/mesa/drivers/dri/i915tex/intel_context.h | 1 + src/mesa/drivers/dri/i915tex/intel_fbo.c | 4 +--- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/mesa/drivers/dri/i915tex/intel_buffers.c b/src/mesa/drivers/dri/i915tex/intel_buffers.c index 4e4f0d14c65..67f992e4a21 100644 --- a/src/mesa/drivers/dri/i915tex/intel_buffers.c +++ b/src/mesa/drivers/dri/i915tex/intel_buffers.c @@ -957,15 +957,22 @@ intelSwapBuffers(__DRIdrawablePrivate * dPriv) intel_fb->swap_ust = ust; } - if (dPriv && intel->lastStamp != dPriv->lastStamp) { + if (intel->revalidateDrawable) { + __DRIscreenPrivate *sPriv = intel->driScreen; + LOCK_HARDWARE(intel); + DRI_VALIDATE_DRAWABLE_INFO(sPriv, dPriv); + intel->revalidateDrawable = GL_FALSE; + UNLOCK_HARDWARE(intel); + if (dPriv && intel->lastStamp != dPriv->lastStamp) { /* XXX this doesn't appear to work quite right. And in any case, it will never get called with single buffered rendering here... And if it's only a window move (not resize), don't need to do anything. */ - if (INTEL_DEBUG & DEBUG_LOCK) - _mesa_printf("doing defered drawable update\n"); - intelWindowMoved(intel); - intel->lastStamp = dPriv->lastStamp; + if (INTEL_DEBUG & DEBUG_LOCK) + _mesa_printf("doing defered drawable update\n"); + intelWindowMoved(intel); + intel->lastStamp = dPriv->lastStamp; + } } } else { diff --git a/src/mesa/drivers/dri/i915tex/intel_context.c b/src/mesa/drivers/dri/i915tex/intel_context.c index 4b96cd7b7ec..aa2078e762a 100644 --- a/src/mesa/drivers/dri/i915tex/intel_context.c +++ b/src/mesa/drivers/dri/i915tex/intel_context.c @@ -673,7 +673,8 @@ intelContendedLock(struct intel_context *intel, GLuint flags) * checking must be done *after* this call: */ if (dPriv) - DRI_VALIDATE_DRAWABLE_INFO(sPriv, dPriv); + intel->revalidateDrawable = GL_TRUE; +// DRI_VALIDATE_DRAWABLE_INFO(sPriv, dPriv); if (sarea->width != intelScreen->width || sarea->height != intelScreen->height || @@ -727,6 +728,7 @@ intelContendedLock(struct intel_context *intel, GLuint flags) } #endif +#if 0 /* Drawable changed? */ if (dPriv && intel->lastStamp != dPriv->lastStamp) { @@ -735,6 +737,7 @@ intelContendedLock(struct intel_context *intel, GLuint flags) /* intelWindowMoved(intel); intel->lastStamp = dPriv->lastStamp;*/ } +#endif } diff --git a/src/mesa/drivers/dri/i915tex/intel_context.h b/src/mesa/drivers/dri/i915tex/intel_context.h index d05b20abbd4..7b97c564a3e 100644 --- a/src/mesa/drivers/dri/i915tex/intel_context.h +++ b/src/mesa/drivers/dri/i915tex/intel_context.h @@ -273,6 +273,7 @@ struct intel_context drmI830Sarea *sarea; GLuint lastStamp; + GLuint revalidateDrawable; /** * Configuration cache diff --git a/src/mesa/drivers/dri/i915tex/intel_fbo.c b/src/mesa/drivers/dri/i915tex/intel_fbo.c index d3f14bcd258..2dd3617f93a 100644 --- a/src/mesa/drivers/dri/i915tex/intel_fbo.c +++ b/src/mesa/drivers/dri/i915tex/intel_fbo.c @@ -176,7 +176,7 @@ intel_get_pointer(GLcontext * ctx, struct gl_renderbuffer *rb, /** * Called via glRenderbufferStorageEXT() to set the format and allocate - * storage for a user-created renderbuffer. + * storage for a user-created (or priv buffer) renderbuffer. */ static GLboolean intel_alloc_renderbuffer_storage(GLcontext * ctx, struct gl_renderbuffer *rb, @@ -188,8 +188,6 @@ intel_alloc_renderbuffer_storage(GLcontext * ctx, struct gl_renderbuffer *rb, GLboolean softwareBuffer = GL_FALSE; int cpp; - ASSERT(rb->Name != 0); - switch (internalFormat) { case GL_R3_G3_B2: case GL_RGB4: -- 2.30.2