remove bogus assertion, change drawable updates
authorRoland Scheidegger <sroland@tungstengraphics.com>
Wed, 11 Jul 2007 15:30:01 +0000 (17:30 +0200)
committerRoland Scheidegger <sroland@tungstengraphics.com>
Wed, 11 Jul 2007 15:30:01 +0000 (17:30 +0200)
don't update driDrawable information until later at all
(blit needs fixing).

src/mesa/drivers/dri/i915tex/intel_buffers.c
src/mesa/drivers/dri/i915tex/intel_context.c
src/mesa/drivers/dri/i915tex/intel_context.h
src/mesa/drivers/dri/i915tex/intel_fbo.c

index 4e4f0d14c65c1d6ee2c88443a4a2ee9e1e911754..67f992e4a21dc50384c603a0b89cbd08ad0f6a67 100644 (file)
@@ -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 {
index 4b96cd7b7eca5ff7eb5c03a70b0fe9ea97d6892f..aa2078e762a115b6bf9371fc37bf01ebfaba1077 100644 (file)
@@ -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
 }
 
 
index d05b20abbd41efbfb825afc0d058b64a04497b3b..7b97c564a3eddf12a8f4c67126cbe41036e01c33 100644 (file)
@@ -273,6 +273,7 @@ struct intel_context
    drmI830Sarea *sarea;
 
    GLuint lastStamp;
+   GLuint revalidateDrawable;
 
    /**
     * Configuration cache
index d3f14bcd25824adf4fbea704e45357bc5736d374..2dd3617f93a5f9586066ad603c28f5642c0ccea6 100644 (file)
@@ -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: