Mesa (master): i965: Consistently do depth resolves before blitting.

Eric Anholt anholt at kemper.freedesktop.org
Tue May 28 20:09:47 UTC 2013


Module: Mesa
Branch: master
Commit: 9720d436d1b6a0f64d023daf243e56a6d5dee5df
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9720d436d1b6a0f64d023daf243e56a6d5dee5df

Author: Eric Anholt <eric at anholt.net>
Date:   Thu May 23 13:36:26 2013 -0700

i965: Consistently do depth resolves before blitting.

We were protected for a long time by the fact that depth was Y tiled and
you couldn't blit Y.  Now that we can blit Y, we were failing to resolve
depth in glCopyPixels().

Note in the comment about swrast, that the swrast map path does resolves
appropriately already.

Reviewed-and-tested-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Acked-by: Paul Berry <stereotype441 at gmail.com>

---

 src/mesa/drivers/dri/intel/intel_blit.c        |    6 ++++++
 src/mesa/drivers/dri/intel/intel_mipmap_tree.c |    6 ------
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c
index 41c1c3a..1f6ad09 100644
--- a/src/mesa/drivers/dri/intel/intel_blit.c
+++ b/src/mesa/drivers/dri/intel/intel_blit.c
@@ -140,6 +140,12 @@ intel_miptree_blit(struct intel_context *intel,
       return false;
    }
 
+   /* The blitter has no idea about HiZ, so we need to get the real depth
+    * data into the two miptrees before we do anything.
+    */
+   intel_miptree_slice_resolve_depth(intel, src_mt, src_level, src_slice);
+   intel_miptree_slice_resolve_depth(intel, dst_mt, dst_level, dst_slice);
+
    if (src_flip)
       src_y = src_mt->level[src_level].height - src_y - height;
 
diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
index eedf80c..c3e55f4 100644
--- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
@@ -919,12 +919,6 @@ intel_miptree_copy_slice(struct intel_context *intel,
        dst_mt, dst_x, dst_y, dst_mt->region->pitch,
        width, height);
 
-   /* Since we are about to copy depth data using either the blitter or swrast
-    * (neither of which respect HiZ), we need to do a depth resolve first.
-    */
-   intel_miptree_slice_resolve_depth(intel, src_mt, level, slice);
-   intel_miptree_slice_resolve_depth(intel, dst_mt, level, slice);
-
    if (!intel_miptree_blit(intel,
                            src_mt, level, slice, 0, 0, false,
                            dst_mt, level, slice, 0, 0, false,




More information about the mesa-commit mailing list