Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> On Wed, Aug 15, 2018 at 3:09 PM, Samuel Pitoiset <samuel.pitoi...@gmail.com> wrote: > This option allows us to remove additional s_waitcnt instructions > because s_barrier internally does s_waitcnt 0. > > Though, apparently there is a problem with LDS accesses that > causes rendering issues with FFXV and DXVK. Disable this > optimization for now (RadeonSI still uses it). > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107460 > CC: 18.2 <mesa-sta...@lists.freedesktop.org> > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > --- > src/amd/common/ac_llvm_util.c | 3 ++- > src/amd/common/ac_llvm_util.h | 1 + > src/gallium/drivers/radeonsi/si_pipe.c | 1 + > 3 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/src/amd/common/ac_llvm_util.c b/src/amd/common/ac_llvm_util.c > index 10e1ca99d4..008a2cfa4e 100644 > --- a/src/amd/common/ac_llvm_util.c > +++ b/src/amd/common/ac_llvm_util.c > @@ -149,7 +149,8 @@ static LLVMTargetMachineRef ac_create_target_machine(enum > radeon_family family, > char features[256]; > const char *triple = (tm_options & AC_TM_SUPPORTS_SPILL) ? > "amdgcn-mesa-mesa3d" : "amdgcn--"; > LLVMTargetRef target = ac_get_llvm_target(triple); > - bool barrier_does_waitcnt = family != CHIP_VEGA20; > + bool barrier_does_waitcnt = tm_options & > AC_TM_AUTO_WAITCNT_BEFORE_BARRIER &&
Can you please do parentheses around the and? I know they're not strictly necessary but I'd like not to have to think about precedence too much. > + family != CHIP_VEGA20; > > snprintf(features, sizeof(features), > > "+DumpCode,+vgpr-spilling,-fp32-denormals,+fp64-denormals%s%s%s%s%s", > diff --git a/src/amd/common/ac_llvm_util.h b/src/amd/common/ac_llvm_util.h > index eaf5f21876..e252bed3bb 100644 > --- a/src/amd/common/ac_llvm_util.h > +++ b/src/amd/common/ac_llvm_util.h > @@ -65,6 +65,7 @@ enum ac_target_machine_options { > AC_TM_CHECK_IR = (1 << 5), > AC_TM_ENABLE_GLOBAL_ISEL = (1 << 6), > AC_TM_CREATE_LOW_OPT = (1 << 7), > + AC_TM_AUTO_WAITCNT_BEFORE_BARRIER = (1 << 8), > }; > > enum ac_float_mode { > diff --git a/src/gallium/drivers/radeonsi/si_pipe.c > b/src/gallium/drivers/radeonsi/si_pipe.c > index 13fcf1f3ae..4327a3f749 100644 > --- a/src/gallium/drivers/radeonsi/si_pipe.c > +++ b/src/gallium/drivers/radeonsi/si_pipe.c > @@ -115,6 +115,7 @@ static void si_init_compiler(struct si_screen *sscreen, > sscreen->info.chip_class <= VI; > > enum ac_target_machine_options tm_options = > + AC_TM_AUTO_WAITCNT_BEFORE_BARRIER | > (sscreen->debug_flags & DBG(SI_SCHED) ? AC_TM_SISCHED : 0) | > (sscreen->debug_flags & DBG(GISEL) ? AC_TM_ENABLE_GLOBAL_ISEL > : 0) | > (sscreen->info.chip_class >= GFX9 ? AC_TM_FORCE_ENABLE_XNACK > : 0) | > -- > 2.18.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev