mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
radeonsi: don't use fast color clear for small surfaces
This removes 35+ clear eliminate passes from DOTA 2. Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
8a58724ac9
commit
175ee084ff
1 changed files with 17 additions and 0 deletions
|
|
@ -421,6 +421,17 @@ static void si_do_fast_color_clear(struct si_context *sctx,
|
|||
|
||||
bool need_decompress_pass = false;
|
||||
|
||||
/* Use a slow clear for small surfaces where the cost of
|
||||
* the eliminate pass can be higher than the benefit of fast
|
||||
* clear. The closed driver does this, but the numbers may differ.
|
||||
*
|
||||
* Always use fast clear on APUs.
|
||||
*/
|
||||
bool too_small = sctx->screen->b.info.has_dedicated_vram &&
|
||||
tex->resource.b.b.nr_samples <= 1 &&
|
||||
tex->resource.b.b.width0 <= 256 &&
|
||||
tex->resource.b.b.height0 <= 256;
|
||||
|
||||
/* Try to clear DCC first, otherwise try CMASK. */
|
||||
if (vi_dcc_enabled(tex, 0)) {
|
||||
uint32_t reset_value;
|
||||
|
|
@ -439,6 +450,9 @@ static void si_do_fast_color_clear(struct si_context *sctx,
|
|||
&clear_words_needed))
|
||||
continue;
|
||||
|
||||
if (clear_words_needed && too_small)
|
||||
continue;
|
||||
|
||||
/* DCC fast clear with MSAA should clear CMASK to 0xC. */
|
||||
if (tex->resource.b.b.nr_samples >= 2 && tex->cmask.size) {
|
||||
/* TODO: This doesn't work with MSAA. */
|
||||
|
|
@ -458,6 +472,9 @@ static void si_do_fast_color_clear(struct si_context *sctx,
|
|||
|
||||
tex->separate_dcc_dirty = true;
|
||||
} else {
|
||||
if (too_small)
|
||||
continue;
|
||||
|
||||
/* 128-bit formats are unusupported */
|
||||
if (tex->surface.bpe > 8) {
|
||||
continue;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue