radv: Don't optimize after lowering FS inputs
authorConnor Abbott <cwabbott0@gmail.com>
Tue, 9 Jul 2019 11:43:13 +0000 (13:43 +0200)
committerConnor Abbott <cwabbott0@gmail.com>
Wed, 10 Jul 2019 08:10:20 +0000 (10:10 +0200)
Currently this is done rather late in radv, after lowering booleans, so
it isn't safe to run additional optimizations that may add e.g. 1-bit
booleans. We could move the lowering parts earlier, but since right now
we only lower FS inputs and by this point all indirects have been
lowered away, there's no reason we should need to optimize anything.

One shader from Devil May Cry 5 was getting optimized, but only because
the optimization loop was working on 32-bit booleans which revealed an
opportunity that was hidden with 1-bit booleans, and we generated a
1-bit boolean which is invalid.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111092
Fixes: 118a66df9907772bb9e5503b736c95d7bb62d52c
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_shader.c

index 8aa5880a38bcf0a17db78cbdd63a960d8e4ab5c6..79418b401fb18ad978189d8bf779109043c7a304 100644 (file)
@@ -548,7 +548,6 @@ lower_fs_io(nir_shader *nir, struct radv_shader_variant_info *shader_info)
        nir_opt_constant_folding(nir);
 
        NIR_PASS_V(nir, nir_io_add_const_offset_to_base, nir_var_shader_in);
-       radv_optimize_nir(nir, false, false);
 }