diff --git a/src/freedreno/vulkan/tu_lrz.cc b/src/freedreno/vulkan/tu_lrz.cc index 6d84f4bd421..e4d8c1211ab 100644 --- a/src/freedreno/vulkan/tu_lrz.cc +++ b/src/freedreno/vulkan/tu_lrz.cc @@ -761,7 +761,8 @@ tu6_calculate_lrz_state(struct tu_cmd_buffer *cmd, gras_lrz_cntl.enable = true; gras_lrz_cntl.lrz_write = z_write_enable && - !(fs->fs.lrz.status & TU_LRZ_FORCE_DISABLE_WRITE); + !(fs->fs.lrz.status & TU_LRZ_FORCE_DISABLE_WRITE) && + !cmd->vk.dynamic_graphics_state.ms.alpha_to_coverage_enable; gras_lrz_cntl.z_write_enable = z_write_enable; gras_lrz_cntl.z_bounds_enable = z_bounds_enable; gras_lrz_cntl.fc_enable = cmd->state.lrz.fast_clear; diff --git a/src/freedreno/vulkan/tu_shader.cc b/src/freedreno/vulkan/tu_shader.cc index c069e743dc8..8fc125f9211 100644 --- a/src/freedreno/vulkan/tu_shader.cc +++ b/src/freedreno/vulkan/tu_shader.cc @@ -2830,7 +2830,7 @@ tu_shader_create(struct tu_device *dev, const struct ir3_shader_variant *fs = shader->variant; shader->fs.sample_shading = fs->sample_shading; shader->fs.has_fdm = key->fragment_density_map; - if (fs->has_kill) + if (fs->has_kill || fs->writes_smask) shader->fs.lrz.status |= TU_LRZ_FORCE_DISABLE_WRITE; if (fs->no_earlyz) shader->fs.lrz.status = TU_LRZ_FORCE_DISABLE_LRZ;