diff options
author | Samuel Pitoiset <[email protected]> | 2018-08-15 15:09:52 +0200 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2018-08-15 16:21:50 +0200 |
commit | 71d5b2fbf83061a1319141d26942771e8c75ff2b (patch) | |
tree | 6232056c1cb54ac88c376906a941f68b66471bbd /src/amd/common | |
parent | 85113c4d0507f91dd773b555b8e3f75423275010 (diff) |
radv: disable the auto-waitcnt-before-barrier LLVM option
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 <[email protected]>
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/amd/common')
-rw-r--r-- | src/amd/common/ac_llvm_util.c | 3 | ||||
-rw-r--r-- | src/amd/common/ac_llvm_util.h | 1 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/amd/common/ac_llvm_util.c b/src/amd/common/ac_llvm_util.c index 10e1ca99d41..42bc538b4d7 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) && + 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 eaf5f21876b..e252bed3bb6 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 { |