diff --git a/.pick_status.json b/.pick_status.json index a984198927a..9374f26bfa0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1004,7 +1004,7 @@ "description": "zink: Emit float controls for preserve_denorms too", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "6afa1b3bade64e0676b349d7d57b3c89b5ec3e9e", "notes": null diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index b3f578ef0ed..c5565b7ac7f 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -4987,7 +4987,8 @@ nir_to_spirv(struct nir_shader *s, const struct zink_shader_info *sinfo, const s emit_image(&ctx, var, get_bare_image_type(&ctx, var, false)); } - if (sinfo->float_controls.flush_denorms) { + if (sinfo->float_controls.flush_denorms || + sinfo->float_controls.preserve_denorms) { unsigned execution_mode = s->info.float_controls_execution_mode; bool flush_16_bit = nir_is_denorm_flush_to_zero(execution_mode, 16); bool flush_32_bit = nir_is_denorm_flush_to_zero(execution_mode, 32);