radv: lower ffma in nir.
authorDave Airlie <airlied@redhat.com>
Tue, 3 Oct 2017 20:33:02 +0000 (06:33 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 10 Oct 2017 21:31:27 +0000 (07:31 +1000)
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 <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Cc: "17.2" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_shader.c

index e0944a478e178021d48bee148f662ea981f1bd11..535d0f4f58b8db15e9c9f0b5fd1f891e8d87f513 100644 (file)
@@ -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
 };