Merge branch 'mesa_7_6_branch' into mesa_7_7_branch
[mesa.git] / src / mesa / drivers / dri / intel / intel_buffers.c
index 4b8ac364f7906656e2be0b254e730ed1667478cb..05643189a21de4d230d95d20288d75e9e89101a0 100644 (file)
@@ -132,6 +132,25 @@ intel_get_cliprects(struct intel_context *intel,
 }
 
 
+/**
+ * Check if we're about to draw into the front color buffer.
+ * If so, set the intel->front_buffer_dirty field to true.
+ */
+void
+intel_check_front_buffer_rendering(struct intel_context *intel)
+{
+   const struct gl_framebuffer *fb = intel->ctx.DrawBuffer;
+   if (fb->Name == 0) {
+      /* drawing to window system buffer */
+      if (fb->_NumColorDrawBuffers > 0) {
+         if (fb->_ColorDrawBufferIndexes[0] == BUFFER_FRONT_LEFT) {
+           intel->front_buffer_dirty = GL_TRUE;
+        }
+      }
+   }
+}
+
+
 /**
  * Update the hardware state for drawing into a window or framebuffer object.
  *
@@ -197,7 +216,7 @@ intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb)
    }
    else {
       /* Get the intel_renderbuffer for the single colorbuffer we're drawing
-       * into, and set up cliprects if it's .
+       * into, and set up cliprects if it's a DRI1 window front buffer.
        */
       if (fb->Name == 0) {
         intel->constant_cliprect = intel->driScreen->dri2.enabled;
@@ -207,14 +226,12 @@ intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb)
               intel_batchbuffer_flush(intel->batch);
            intel->front_cliprects = GL_TRUE;
            colorRegions[0] = intel_get_rb_region(fb, BUFFER_FRONT_LEFT);
-
-           intel->front_buffer_dirty = GL_TRUE;
         }
         else {
            if (!intel->constant_cliprect && intel->front_cliprects)
               intel_batchbuffer_flush(intel->batch);
            intel->front_cliprects = GL_FALSE;
-           colorRegions[0]= intel_get_rb_region(fb, BUFFER_BACK_LEFT);
+           colorRegions[0] = intel_get_rb_region(fb, BUFFER_BACK_LEFT);
         }
       }
       else {
@@ -262,7 +279,7 @@ intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb)
    if (fb->_StencilBuffer && fb->_StencilBuffer->Wrapped) {
       irbStencil = intel_renderbuffer(fb->_StencilBuffer->Wrapped);
       if (irbStencil && irbStencil->region) {
-         ASSERT(irbStencil->Base._ActualFormat == GL_DEPTH24_STENCIL8_EXT);
+         ASSERT(irbStencil->Base.Format == MESA_FORMAT_S8_Z24);
          FALLBACK(intel, INTEL_FALLBACK_STENCIL_BUFFER, GL_FALSE);
       }
       else {