diff options
author | Lioncash <mathew1800@gmail.com> | 2018-09-19 04:37:06 +0200 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2018-09-19 05:35:57 +0200 |
commit | c51f8563a66af6fa65f5b486ee3b86f5249415b9 (patch) | |
tree | 9993a4e398a6b0d8edf23d0683109cf5f29bea4e /src/common/ring_buffer.h | |
parent | Merge pull request #1348 from ogniK5377/GetImageSize (diff) | |
download | yuzu-c51f8563a66af6fa65f5b486ee3b86f5249415b9.tar yuzu-c51f8563a66af6fa65f5b486ee3b86f5249415b9.tar.gz yuzu-c51f8563a66af6fa65f5b486ee3b86f5249415b9.tar.bz2 yuzu-c51f8563a66af6fa65f5b486ee3b86f5249415b9.tar.lz yuzu-c51f8563a66af6fa65f5b486ee3b86f5249415b9.tar.xz yuzu-c51f8563a66af6fa65f5b486ee3b86f5249415b9.tar.zst yuzu-c51f8563a66af6fa65f5b486ee3b86f5249415b9.zip |
Diffstat (limited to 'src/common/ring_buffer.h')
-rw-r--r-- | src/common/ring_buffer.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/common/ring_buffer.h b/src/common/ring_buffer.h index 45926c9ec..0fd5b86f0 100644 --- a/src/common/ring_buffer.h +++ b/src/common/ring_buffer.h @@ -9,6 +9,7 @@ #include <atomic> #include <cstddef> #include <cstring> +#include <new> #include <type_traits> #include <vector> #include "common/common_types.h" @@ -102,8 +103,15 @@ public: private: // It is important to align the below variables for performance reasons: // Having them on the same cache-line would result in false-sharing between them. - alignas(128) std::atomic<std::size_t> m_read_index{0}; - alignas(128) std::atomic<std::size_t> m_write_index{0}; + // TODO: Remove this ifdef whenever clang and GCC support + // std::hardware_destructive_interference_size. +#if defined(_MSC_VER) && _MSC_VER >= 1911 + alignas(std::hardware_destructive_interference_size) std::atomic_size_t m_read_index{0}; + alignas(std::hardware_destructive_interference_size) std::atomic_size_t m_write_index{0}; +#else + alignas(128) std::atomic_size_t m_read_index{0}; + alignas(128) std::atomic_size_t m_write_index{0}; +#endif std::array<T, granularity * capacity> m_data; }; |