From: Dave Airlie Date: Tue, 3 Oct 2017 20:33:02 +0000 (+1000) Subject: radv: lower ffma in nir. X-Git-Tag: android-x86-8.1-r1~9155 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=2c61594d84911f486aa2edb4b8e561e780139d20;p=android-x86%2Fexternal-mesa.git radv: lower ffma in nir. So it appears the Vulkan SPIR-V fma opcode can be equivalent to a mad operation, and the fma hw opcode on AMD hw is issued like a double opcode so is slower. Also the radeonsi stack does this. This appears to improve performance on a number of games from Feral, and thanks to Feral for noticing the problem. I'm reposting this one as Marek indicated he thinks this is what we should be doing on AMD hw. Reviewed-by: Nicolai Hähnle Reviewed-by: Marek Olšák Cc: "17.2" Signed-off-by: Dave Airlie --- diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index e0944a478e1..535d0f4f58b 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -63,6 +63,7 @@ static const struct nir_shader_compiler_options nir_options = { .lower_unpack_unorm_4x8 = true, .lower_extract_byte = true, .lower_extract_word = true, + .lower_ffma = true, .max_unroll_iterations = 32 };