r600: update the software fp64 support

This change began by fixing an old regression related to the dceil
functionality. This issue affected palm. Now, this change adjusts
the software fp64 support to make it fully operational.

This change was tested on palm and barts. This change fixes 561
"piglit run all" tests. The khr_gl tests are fixed as well (243 tests).
Here is a summary:
spec/arb_gpu_shader_fp64/execution/built-in-functions/*
spec/arb_gpu_shader_fp64/execution/fs-isnan-dvec: fail pass
spec/arb_gpu_shader_fp64/execution/gs-isnan-dvec: fail pass
spec/arb_gpu_shader_fp64/execution/vs-isnan-dvec: fail pass
spec/glsl-4.00/execution/built-in-functions/*
spec/glsl-4.10/execution/conversion/*
khr-gl4[3-5]/compute_shader/fp64-case1: fail pass
khr-gl4[0-5]/gpu_shader_fp64/builtin/*

Fixes: aed6a39c10 ("glsl: Retire dround lowering.")
Signed-off-by: Patrick Lerda <patrick9876@free.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33708>
This commit is contained in:
Patrick Lerda 2025-02-21 13:45:41 +01:00 committed by Marge Bot
parent 0ff322d1d9
commit 186fb5e73a

View file

@ -1230,8 +1230,14 @@ bool r600_common_screen_init(struct r600_common_screen *rscreen,
}
if (rscreen->info.gfx_level < CAYMAN) {
rscreen->nir_options.lower_doubles_options = nir_lower_fp64_full_software;
rscreen->nir_options.lower_atomic_offset_to_range_base = true;
rscreen->nir_options.lower_doubles_options =
nir_lower_fp64_full_software |
nir_lower_dceil |
nir_lower_dsqrt |
nir_lower_drcp |
nir_lower_drsq;
} else {
rscreen->nir_options.lower_doubles_options =
nir_lower_ddiv |