i965: don't clear resolve map when doing fast depth clears.
authorPaul Berry <stereotype441@gmail.com>
Wed, 22 Aug 2012 15:02:39 +0000 (08:02 -0700)
committerPaul Berry <stereotype441@gmail.com>
Fri, 24 Aug 2012 16:59:27 +0000 (09:59 -0700)
Previously, when performing a fast depth clear, we would also clear
the miptree's resolve map.  This destroyed important information,
since the resolve map contains information about needed resolves for
all levels and layers of the miptree, whereas a depth clear only
applies to a single level/layer combination at a time.  As a result,
resolves would sometimes fail to occur, leading to incorrect
rendering.

Fixes rendering artifacts with shadow maps in Unigine Heaven and
Unigine Sanctuary.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50270

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
src/mesa/drivers/dri/i965/brw_clear.c

index e56a26ae1ec7aabddad4ded12ddd3992e4ae5337..ce40e52d461d412a4a96595d4534599fcb2a2097 100644 (file)
@@ -193,11 +193,9 @@ brw_fast_clear_depth(struct gl_context *ctx)
       intel_batchbuffer_emit_mi_flush(intel);
    }
 
-   /* Now, the entire HiZ buffer contains data that needs to be resolved to the
-    * entire depth buffer (so any previous resolve records should get tossed
-    * out).
+   /* Now, the HiZ buffer contains data that needs to be resolved to the depth
+    * buffer.
     */
-   intel_resolve_map_clear(&mt->hiz_map);
    intel_renderbuffer_set_needs_depth_resolve(depth_irb);
 
    return true;