mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
rusticl/kernel: explicitly set rounding modes
Sincedbbf566588("aco,ac/llvm,radeonsi: lower f2f16 to f2f16_rtz in nir") radeonsi behavior changed and some of the core fp16 ops broke as a result. We should explicitly specify the rounding mode until we add an gallium API for drivers to advertize what they prefer. Cc: mesa-stable Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26655> (cherry picked from commitd136583c82)
This commit is contained in:
parent
065c7d1f8c
commit
1ce44041b1
3 changed files with 14 additions and 1 deletions
|
|
@ -504,7 +504,7 @@
|
|||
"description": "rusticl/kernel: explicitly set rounding modes",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null,
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -734,6 +734,10 @@ pub(super) fn convert_spirv_to_nir(
|
|||
*/
|
||||
nir.preserve_fp16_denorms();
|
||||
|
||||
// Set to rtne for now until drivers are able to report their prefered rounding mode, that
|
||||
// also matches what we report via the API.
|
||||
nir.set_fp_rounding_mode_rtne();
|
||||
|
||||
let (args, internal_args) = lower_and_optimize_nir(dev, &mut nir, args, &dev.lib_clc);
|
||||
|
||||
if let Some(cache) = cache {
|
||||
|
|
|
|||
|
|
@ -446,6 +446,15 @@ impl NirShader {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn set_fp_rounding_mode_rtne(&mut self) {
|
||||
unsafe {
|
||||
self.nir.as_mut().info.float_controls_execution_mode |=
|
||||
float_controls::FLOAT_CONTROLS_ROUNDING_MODE_RTE_FP16 as u32
|
||||
| float_controls::FLOAT_CONTROLS_ROUNDING_MODE_RTE_FP32 as u32
|
||||
| float_controls::FLOAT_CONTROLS_ROUNDING_MODE_RTE_FP64 as u32;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn reads_sysval(&self, sysval: gl_system_value) -> bool {
|
||||
let nir = unsafe { self.nir.as_ref() };
|
||||
bitset::test_bit(&nir.info.system_values_read, sysval as u32)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue