From 7ebff681dbc1986c3d6bc6d1ca15e01f182a9dba Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 6 Mar 2024 10:47:05 +0100 Subject: [PATCH] radv: re-emit RB+ state with PS epilogs only when the col format changes RB+ was re-emitted every time a new PS epilog was requested even if the non-compacted color format was equal. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index d185ccabd5a..3e435fcd097 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -9220,17 +9220,19 @@ radv_emit_all_graphics_states(struct radv_cmd_buffer *cmd_buffer, const struct r return; } - cmd_buffer->state.col_format_non_compacted = ps_epilog->spi_shader_col_format; + uint32_t col_format_non_compacted = ps_epilog->spi_shader_col_format; assert(cmd_buffer->state.custom_blend_mode == 0); - bool need_null_export_workaround = - radv_needs_null_export_workaround(device, cmd_buffer->state.shaders[MESA_SHADER_FRAGMENT], 0); + if (radv_needs_null_export_workaround(device, cmd_buffer->state.shaders[MESA_SHADER_FRAGMENT], 0) && + !col_format_non_compacted) + col_format_non_compacted = V_028714_SPI_SHADER_32_R; - if (need_null_export_workaround && !cmd_buffer->state.col_format_non_compacted) - cmd_buffer->state.col_format_non_compacted = V_028714_SPI_SHADER_32_R; - if (device->physical_device->rad_info.rbplus_allowed) + if (device->physical_device->rad_info.rbplus_allowed && + cmd_buffer->state.col_format_non_compacted != col_format_non_compacted) { + cmd_buffer->state.col_format_non_compacted = col_format_non_compacted; cmd_buffer->state.dirty |= RADV_CMD_DIRTY_RBPLUS; + } } }