i965: Always set tiling for depth buffer on sandybridge
[mesa.git] / src / mesa / drivers / dri / intel / intel_pixel_copy.c
index 757f2f7d4db9cc8cbad602f4700572c359ab6f48..2008a4c2becc46f25f965989b0e08c36bd73ccd0 100644 (file)
@@ -116,6 +116,7 @@ do_blit_copypixels(GLcontext * ctx,
    GLint orig_dsty;
    GLint orig_srcx;
    GLint orig_srcy;
+   GLboolean flip = GL_FALSE;
 
    if (type == GL_DEPTH || type == GL_STENCIL) {
       if (INTEL_DEBUG & DEBUG_FALLBACKS)
@@ -141,9 +142,7 @@ do_blit_copypixels(GLcontext * ctx,
    if (!src || !dst)
       return GL_FALSE;
 
-   intelFlush(&intel->ctx);
-
-   /* XXX: We fail to handle different inversion between read and draw framebuffer. */
+   intel_flush(&intel->ctx);
 
    /* Clip to destination buffer. */
    orig_dstx = dstx;
@@ -167,23 +166,23 @@ do_blit_copypixels(GLcontext * ctx,
    dstx += srcx - orig_srcx;
    dsty += srcy - orig_srcy;
 
-   /* Convert from GL to hardware coordinates: */
+   /* Flip dest Y if it's a window system framebuffer. */
    if (fb->Name == 0) {
-      /* copypixels to a system framebuffer */
+      /* copypixels to a window system framebuffer */
       dsty = fb->Height - dsty - height;
-   } else {
-      /* copypixels to a user framebuffer object */
-      dsty = dsty;
+      flip = !flip;
    }
 
-   /* Flip source Y if it's a system framebuffer. */
-   if (read_fb->Name == 0)
-      srcy = fb->Height - srcy - height;
+   /* Flip source Y if it's a window system framebuffer. */
+   if (read_fb->Name == 0) {
+      srcy = read_fb->Height - srcy - height;
+      flip = !flip;
+   }
 
    if (!intel_region_copy(intel,
                          dst, 0, dstx, dsty,
                          src, 0, srcx, srcy,
-                         width, height,
+                         width, height, flip,
                          ctx->Color.ColorLogicOpEnabled ?
                          ctx->Color.LogicOp : GL_COPY)) {
       DBG("%s: blit failure\n", __FUNCTION__);