Skip to content
  • Rhys Perry's avatar
    ac,ac/nir: use a better sync scope for shared atomics · bd4c661a
    Rhys Perry authored
    https://reviews.llvm.org/rL356946
    
     (present in LLVM 9 and later) changed
    the meaning of the "system" sync scope, making it no longer restricted to
    the memory operation's address space. So a single address space sync scope
    is needed for shared atomic operations (such as "system-one-as" or
    "workgroup-one-as") otherwise buffer_wbinvl1 and s_waitcnt instructions
    can be created at each shared atomic operation.
    
    This mostly reimplements LLVMBuildAtomicRMW and LLVMBuildAtomicCmpXchg
    to allow for more sync scopes and uses the new functions in ac->nir with
    the "workgroup-one-as" or "workgroup" sync scopes.
    
          F1 2017 (4K, Ultra High settings, TAA), avg FPS : 59 -> 59.67 (+1.14%)
         Strange Brigade (4K, ~highest settings), avg FPS : 51.5 -> 51.6 (+0.19%)
    RotTR/mountain (4K, VeryHigh settings, FXAA), avg FPS : 57.2 -> 57.2 (+0.0%)
        RotTR/tomb (4K, VeryHigh settings, FXAA), avg FPS : 42.5 -> 43.0 (+1.17%)
      RotTR/valley (4K, VeryHigh settings, FXAA), avg FPS : 40.7 -> 41.6 (+2.21%)
                             Warhammer II/fallen, avg FPS : 31.63 -> 31.83 (+0.63%)
                             Warhammer II/skaven, avg FPS : 37.77 -> 38.07 (+0.79%)
    
    Signed-off-by: default avatarRhys Perry <pendingchaos02@gmail.com>
    Reviewed-by: default avatarSamuel Pitoiset <samuel.pitoiset@gmail.com>
    Reviewed-by: default avatarBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
    bd4c661a