int dst_x1, int dst_y1,
bool mirror_x, bool mirror_y)
{
+ intel_miptree_slice_resolve_depth(intel, src_mt, src_level, src_layer);
+ intel_miptree_slice_resolve_depth(intel, dst_mt, dst_level, dst_layer);
+
brw_blorp_blit_params params(brw_context(&intel->ctx),
src_mt, src_level, src_layer,
dst_mt, dst_level, dst_layer,
dst_x1, dst_y1,
mirror_x, mirror_y);
brw_blorp_exec(intel, ¶ms);
+
+ intel_miptree_slice_set_needs_hiz_resolve(dst_mt, dst_level, dst_layer);
}
static void
struct intel_mipmap_tree *src_mt = find_miptree(buffer_bit, src_irb);
struct intel_mipmap_tree *dst_mt = find_miptree(buffer_bit, dst_irb);
- /* Get ready to blit. This includes depth resolving the src and dst
- * buffers if necessary.
- */
- intel_renderbuffer_resolve_depth(intel, src_irb);
- intel_renderbuffer_resolve_depth(intel, dst_irb);
-
/* Do the blit */
brw_blorp_blit_miptrees(intel,
src_mt, src_irb->mt_level, src_irb->mt_layer,
srcX0, srcY0, dstX0, dstY0, dstX1, dstY1,
mirror_x, mirror_y);
- intel_renderbuffer_set_needs_hiz_resolve(dst_irb);
intel_renderbuffer_set_needs_downsample(dst_irb);
}
int dst_x0 = 0;
int dst_y0 = 0;
- intel_miptree_slice_resolve_depth(intel, src, 0, 0);
- intel_miptree_slice_resolve_depth(intel, dst, 0, 0);
-
brw_blorp_blit_miptrees(intel,
src, 0 /* level */, 0 /* layer */,
dst, 0 /* level */, 0 /* layer */,
mt->logical_width0,
mt->logical_height0);
mt->need_downsample = false;
-
- /* Strictly speaking, after a downsample on a depth miptree, a hiz
- * resolve is needed on the singlesample miptree. However, since the
- * singlesample miptree is never rendered to, the hiz resolve will never
- * occur. Therefore we do not mark the needed hiz resolve after
- * downsampling.
- */
}
/**
mt->singlesample_mt, mt,
mt->logical_width0,
mt->logical_height0);
- intel_miptree_slice_set_needs_hiz_resolve(mt, 0, 0);
}
void *