From 186fb5e73a07509059a8c9222f62dab03e9b2ce8 Mon Sep 17 00:00:00 2001 From: Patrick Lerda Date: Fri, 21 Feb 2025 13:45:41 +0100 Subject: [PATCH] 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: aed6a39c10c3 ("glsl: Retire dround lowering.") Signed-off-by: Patrick Lerda Part-of: --- src/gallium/drivers/r600/r600_pipe_common.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/r600/r600_pipe_common.c b/src/gallium/drivers/r600/r600_pipe_common.c index 04d28739ca6..827eca36911 100644 --- a/src/gallium/drivers/r600/r600_pipe_common.c +++ b/src/gallium/drivers/r600/r600_pipe_common.c @@ -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 |