radv: remove radv_pipeline_key::dynamic_color_write_mask

When this state is dynamic, the common runtime code sets the write mask
to 0xf which prevents color exports to be removed.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26400>
This commit is contained in:
Samuel Pitoiset 2023-11-29 15:01:32 +01:00 committed by Marge Bot
parent a6f22aa182
commit bd54592487
2 changed files with 2 additions and 8 deletions

View file

@ -1225,14 +1225,11 @@ radv_remove_color_exports(const struct radv_pipeline_key *pipeline_key, nir_shad
{
bool fixup_derefs = false;
/* Do not remove color exports when a PS epilog is used because the format isn't known. */
/* Do not remove color exports when a PS epilog is used because the format isn't known and the color write mask can
* be dynamic. */
if (pipeline_key->ps.has_epilog)
return;
/* Do not remove color exports when the write mask is dynamic. */
if (pipeline_key->dynamic_color_write_mask)
return;
nir_foreach_shader_out_variable (var, nir) {
int idx = var->data.location;
idx -= FRAG_RESULT_DATA0;
@ -1952,8 +1949,6 @@ radv_generate_graphics_pipeline_key(const struct radv_device *device, const stru
key.dynamic_rasterization_samples = !!(pipeline->dynamic_states & RADV_DYNAMIC_RASTERIZATION_SAMPLES) ||
(!!(pipeline->active_stages & VK_SHADER_STAGE_FRAGMENT_BIT) && !state->ms);
key.dynamic_color_write_mask = !!(pipeline->dynamic_states & RADV_DYNAMIC_COLOR_WRITE_MASK);
if (device->physical_device->use_ngg) {
VkShaderStageFlags ngg_stage;

View file

@ -91,7 +91,6 @@ struct radv_pipeline_key {
uint32_t primitives_generated_query : 1;
uint32_t dynamic_patch_control_points : 1;
uint32_t dynamic_rasterization_samples : 1;
uint32_t dynamic_color_write_mask : 1;
uint32_t dynamic_provoking_vtx_mode : 1;
uint32_t dynamic_line_rast_mode : 1;
uint32_t tex_non_uniform : 1;