change back driver change from previous commit
[mesa.git] / src / mesa / drivers / dri / i915tex / intel_context.c
index 4b96cd7b7eca5ff7eb5c03a70b0fe9ea97d6892f..ec4a7a746d48485be1a143e8140df6cb0ff655f8 100644 (file)
@@ -192,6 +192,7 @@ const struct dri_extension card_extensions[] = {
 #if 1                           /* XXX FBO temporary? */
    {"GL_EXT_packed_depth_stencil", NULL},
 #endif
+   {"GL_EXT_pixel_buffer_object", NULL},
    {"GL_EXT_secondary_color", GL_EXT_secondary_color_functions},
    {"GL_EXT_stencil_wrap", NULL},
    {"GL_EXT_texture_edge_clamp", NULL},
@@ -288,6 +289,10 @@ static void
 intelCheckFrontUpdate(GLcontext * ctx)
 {
    struct intel_context *intel = intel_context(ctx);
+   /* rely on _ColorDrawBufferMask being kept up to date by mesa
+      even for window-fbos. */
+   /* not sure. Might need that for all masks including
+      BUFFER_BIT_FRONT_LEFT maybe? */
    if (intel->ctx.DrawBuffer->_ColorDrawBufferMask[0] ==
        BUFFER_BIT_FRONT_LEFT) {
       intelScreenPrivate *screen = intel->intelScreen;
@@ -370,7 +375,7 @@ intelInitContext(struct intel_context *intel,
 
    if (!havePools)
       return GL_FALSE;
-     
+
    if (!_mesa_initialize_context(&intel->ctx,
                                  mesaVis, shareCtx,
                                  functions, (void *) intel))
@@ -619,15 +624,14 @@ intelMakeCurrent(__DRIcontextPrivate * driContextPriv,
          }
       }
 
-      /* set GLframebuffer size to match window, if needed */
+      /* update GLframebuffer size to match window if needed */
       driUpdateFramebufferSize(&intel->ctx, driDrawPriv);
 
       if (driReadPriv != driDrawPriv) {
-        driUpdateFramebufferSize(&intel->ctx, driReadPriv);
+         driUpdateFramebufferSize(&intel->ctx, driReadPriv);
       }
 
       _mesa_make_current(&intel->ctx, &intel_fb->Base, readFb);
-      intel->intelScreen->dummyctxptr = &intel->ctx;
 
       /* The drawbuffer won't always be updated by _mesa_make_current: 
        */
@@ -642,9 +646,11 @@ intelMakeCurrent(__DRIcontextPrivate * driContextPriv,
                                  &intel_fb->vbl_seq);
            intel->driDrawable = driDrawPriv;
            intelWindowMoved(intel);
+           intel->lastStamp = driDrawPriv->lastStamp;
+        }
+        else if (intel->lastStamp != driDrawPriv->lastStamp) {
+           intel_draw_buffer(&intel->ctx, &intel_fb->Base);
         }
-
-        intel_draw_buffer(&intel->ctx, &intel_fb->Base);
       }
    }
    else {
@@ -726,15 +732,6 @@ intelContendedLock(struct intel_context *intel, GLuint flags)
       intel->current_rotation = sarea->rotation;
    }
 #endif
-
-   /* Drawable changed?
-    */
-   if (dPriv && intel->lastStamp != dPriv->lastStamp) {
-      if (INTEL_DEBUG & DEBUG_LOCK)
-         _mesa_printf("drawable change detected but defering update\n");
-/*      intelWindowMoved(intel);
-      intel->lastStamp = dPriv->lastStamp;*/
-   }
 }