aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Hartmetz <[email protected]>2013-12-21 21:11:37 +0100
committerMarek Olšák <[email protected]>2013-12-22 01:41:03 +0100
commit2efe7927d38983029784825fc4897e9b77aa237e (patch)
tree9021ea18f676185bb8eecf3df09657539a5258f4
parent900ac63ee88a16b7fb7f0ca2b03a40259b8ebd84 (diff)
radeonsi: Use htile_buffer for depth only when there is no stencil.
Signed-off-by: Marek Olšák <[email protected]>
-rw-r--r--src/gallium/drivers/radeonsi/si_state.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 8705d16d6ca..49b9bb546e6 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -1819,6 +1819,8 @@ static void si_db(struct r600_context *rctx, struct si_pm4_state *pm4,
/* HiZ aka depth buffer htile */
/* use htile only for first level */
if (rtex->htile_buffer && !level) {
+ const struct util_format_description *fmt_desc;
+
z_info |= S_028040_TILE_SURFACE_ENABLE(1);
/* This is optimal for the clear value of 1.0 and using
@@ -1827,6 +1829,12 @@ static void si_db(struct r600_context *rctx, struct si_pm4_state *pm4,
* clearing. */
z_info |= S_028040_ZRANGE_PRECISION(1);
+ fmt_desc = util_format_description(rtex->resource.b.b.format);
+ if (!util_format_has_stencil(fmt_desc)) {
+ /* Use all of the htile_buffer for depth */
+ s_info |= S_028044_TILE_STENCIL_DISABLE(1);
+ }
+
uint64_t va = r600_resource_va(&rctx->screen->b.b, &rtex->htile_buffer->b.b);
db_htile_data_base = va >> 8;
db_htile_surface = S_028ABC_FULL_CACHE(1);