From 4f3c82c72c57acd4800e12ec77ad1b830812072c Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Thu, 16 May 2019 22:41:13 -0700 Subject: [PATCH] st/nir: Don't use GLSL IR's MOD_TO_FLOOR lowering when using NIR. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Both GLSL IR and NIR perform the same mod -> floor lowering for 32-bit types. But nir_lower_double_ops is slightly more defensive against lowered drcp precision loss, and handles mod(x, x) = 0 directly. This works well...assuming nir_lower_double_ops actually gets an fmod op to lower in the first place. The previous patches enabled NIR-based lowering for the remaining drivers, so we can stop using the GLSL IR lowering when using NIR. Fixes KHR-GL45.gpu_shader_fp64.builtin.mod_dvec[234] on iris. Reviewed-by: Marek Olšák --- src/mesa/state_tracker/st_glsl_to_ir.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesa/state_tracker/st_glsl_to_ir.cpp b/src/mesa/state_tracker/st_glsl_to_ir.cpp index ea56bf4..ba241c0 100644 --- a/src/mesa/state_tracker/st_glsl_to_ir.cpp +++ b/src/mesa/state_tracker/st_glsl_to_ir.cpp @@ -121,7 +121,7 @@ st_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) shader, ctx->Extensions.KHR_blend_equation_advanced_coherent); lower_instructions(ir, - MOD_TO_FLOOR | + (use_nir ? 0 : MOD_TO_FLOOR) | FDIV_TO_MUL_RCP | EXP_TO_EXP2 | LOG_TO_LOG2 | -- 2.7.4