diff --git a/.pick_status.json b/.pick_status.json index 716d2547560..e46e2102e07 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -534,7 +534,7 @@ "description": "vtn: set default fp_math_ctrl values for kernels", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "9da2d218041c1a9dd731c3f10ca4800c8b7c6773", "notes": null diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index daeb6b7ea75..65229eee740 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -5248,6 +5248,12 @@ vtn_handle_entry_point(struct vtn_builder *b, const uint32_t *w, b->interface_ids = vtn_alloc_array(b, uint32_t, b->interface_ids_count); memcpy(b->interface_ids, &w[start], b->interface_ids_count * 4); qsort(b->interface_ids, b->interface_ids_count, 4, cmp_uint32_t); + + if (stage == MESA_SHADER_KERNEL) { + b->fp_math_ctrl_fp16 |= nir_fp_preserve_sz_inf_nan; + b->fp_math_ctrl_fp32 |= nir_fp_preserve_sz_inf_nan; + b->fp_math_ctrl_fp64 |= nir_fp_preserve_sz_inf_nan; + } } static bool