mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
radeonsi/gfx9: set optimal OVERWRITE_COMBINER_WATERMARK
This commit is contained in:
parent
8ad12c8bec
commit
99835fff08
2 changed files with 14 additions and 1 deletions
|
|
@ -617,6 +617,7 @@ struct si_framebuffer {
|
|||
ubyte color_is_int8;
|
||||
ubyte color_is_int10;
|
||||
ubyte dirty_cbufs;
|
||||
ubyte dcc_overwrite_combiner_watermark;
|
||||
bool dirty_zsbuf;
|
||||
bool any_dst_linear;
|
||||
bool CB_has_shader_readable_metadata;
|
||||
|
|
|
|||
|
|
@ -113,12 +113,13 @@ static void si_emit_cb_render_state(struct si_context *sctx)
|
|||
blend &&
|
||||
blend->blend_enable_4bit & cb_target_mask &&
|
||||
sctx->framebuffer.nr_samples >= 2;
|
||||
unsigned watermark = sctx->framebuffer.dcc_overwrite_combiner_watermark;
|
||||
|
||||
radeon_opt_set_context_reg(
|
||||
sctx, R_028424_CB_DCC_CONTROL,
|
||||
SI_TRACKED_CB_DCC_CONTROL,
|
||||
S_028424_OVERWRITE_COMBINER_MRT_SHARING_DISABLE(1) |
|
||||
S_028424_OVERWRITE_COMBINER_WATERMARK(4) |
|
||||
S_028424_OVERWRITE_COMBINER_WATERMARK(watermark) |
|
||||
S_028424_OVERWRITE_COMBINER_DISABLE(oc_disable));
|
||||
}
|
||||
|
||||
|
|
@ -2855,6 +2856,7 @@ static void si_set_framebuffer_state(struct pipe_context *ctx,
|
|||
sctx->framebuffer.any_dst_linear = false;
|
||||
sctx->framebuffer.CB_has_shader_readable_metadata = false;
|
||||
sctx->framebuffer.DB_has_shader_readable_metadata = false;
|
||||
unsigned num_bpp64_colorbufs = 0;
|
||||
|
||||
for (i = 0; i < state->nr_cbufs; i++) {
|
||||
if (!state->cbufs[i])
|
||||
|
|
@ -2901,6 +2903,8 @@ static void si_set_framebuffer_state(struct pipe_context *ctx,
|
|||
|
||||
if (tex->surface.is_linear)
|
||||
sctx->framebuffer.any_dst_linear = true;
|
||||
if (tex->surface.bpe >= 8)
|
||||
num_bpp64_colorbufs++;
|
||||
|
||||
if (vi_dcc_enabled(tex, surf->base.u.tex.level))
|
||||
sctx->framebuffer.CB_has_shader_readable_metadata = true;
|
||||
|
|
@ -2916,6 +2920,14 @@ static void si_set_framebuffer_state(struct pipe_context *ctx,
|
|||
}
|
||||
}
|
||||
|
||||
/* For optimal DCC performance. */
|
||||
if (sctx->chip_class == VI)
|
||||
sctx->framebuffer.dcc_overwrite_combiner_watermark = 4;
|
||||
else if (num_bpp64_colorbufs >= 5)
|
||||
sctx->framebuffer.dcc_overwrite_combiner_watermark = 8;
|
||||
else
|
||||
sctx->framebuffer.dcc_overwrite_combiner_watermark = 6;
|
||||
|
||||
struct si_texture *zstex = NULL;
|
||||
|
||||
if (state->zsbuf) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue