From: Ian Romanick <ian.d.roman...@intel.com> Since SSBOs can be written, copy propagating a read can cause the value to magically change. SSBO reads are also very expensive, so doing it twice will be slower.
Haswell, Broadwell, and Skylake had similar results. (Skylake shown) total instructions in shared programs: 14399120 -> 14399119 (<.01%) instructions in affected programs: 684 -> 683 (-0.15%) helped: 1 HURT: 0 total cycles in shared programs: 532978931 -> 532973113 (<.01%) cycles in affected programs: 530484 -> 524666 (-1.10%) helped: 1 HURT: 0 Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> Cc: mesa-sta...@lists.freedesktop.org Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106774 --- src/compiler/glsl/opt_copy_propagation.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/compiler/glsl/opt_copy_propagation.cpp b/src/compiler/glsl/opt_copy_propagation.cpp index 6220aa86da9..206dffe4f1c 100644 --- a/src/compiler/glsl/opt_copy_propagation.cpp +++ b/src/compiler/glsl/opt_copy_propagation.cpp @@ -347,6 +347,8 @@ ir_copy_propagation_visitor::add_copy(ir_assignment *ir) if (lhs_var != NULL && rhs_var != NULL && lhs_var != rhs_var) { if (lhs_var->data.mode != ir_var_shader_storage && lhs_var->data.mode != ir_var_shader_shared && + rhs_var->data.mode != ir_var_shader_storage && + rhs_var->data.mode != ir_var_shader_shared && lhs_var->data.precise == rhs_var->data.precise) { _mesa_hash_table_insert(acp, lhs_var, rhs_var); } -- 2.14.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev