In intel_miptree_slice_set_needs_(depth|hiz)_resolve, if layered rendering is being used, then we need to mark all layers as needing depth or hiz resolves.
Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> --- src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 31 +++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c index 900e1c2..be5edde 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c @@ -41,6 +41,7 @@ #include "main/enums.h" #include "main/formats.h" +#include "main/fbobject.h" #include "main/glformats.h" #include "main/texcompress_etc.h" #include "main/teximage.h" @@ -1321,11 +1322,22 @@ intel_miptree_slice_set_needs_hiz_resolve(struct intel_mipmap_tree *mt, uint32_t level, uint32_t layer) { + uint32_t end_layer = layer + 1; + if (!intel_miptree_slice_has_hiz(mt, level, layer)) return; - intel_resolve_map_set(&mt->hiz_map, - level, layer, GEN6_HIZ_OP_HIZ_RESOLVE); + if (layer == 0 && mt->level[level].depth > 1) { + GET_CURRENT_CONTEXT(ctx); + struct gl_framebuffer *fb = ctx->DrawBuffer; + if (fb->Layered) + end_layer = mt->level[level].depth; + } + + for (; layer < end_layer; layer++) { + intel_resolve_map_set(&mt->hiz_map, + level, layer, GEN6_HIZ_OP_HIZ_RESOLVE); + } } @@ -1334,11 +1346,22 @@ intel_miptree_slice_set_needs_depth_resolve(struct intel_mipmap_tree *mt, uint32_t level, uint32_t layer) { + uint32_t end_layer = layer + 1; + if (!intel_miptree_slice_has_hiz(mt, level, layer)) return; - intel_resolve_map_set(&mt->hiz_map, - level, layer, GEN6_HIZ_OP_DEPTH_RESOLVE); + if (layer == 0 && mt->level[level].depth > 1) { + GET_CURRENT_CONTEXT(ctx); + struct gl_framebuffer *fb = ctx->DrawBuffer; + if (fb->Layered) + end_layer = mt->level[level].depth; + } + + for (; layer < end_layer; layer++) { + intel_resolve_map_set(&mt->hiz_map, + level, layer, GEN6_HIZ_OP_DEPTH_RESOLVE); + } } static bool -- 1.7.10.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev