mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	travis: Update xcode
Update to 10.2 (required for CTAD to work correctly)
This commit is contained in:
		
							parent
							
								
									8b7b6e9f74
								
							
						
					
					
						commit
						f2499953c0
					
				
					 2 changed files with 18 additions and 5 deletions
				
			
		|  | @ -32,7 +32,7 @@ matrix: | ||||||
|     - os: osx |     - os: osx | ||||||
|       env: NAME="macos build" |       env: NAME="macos build" | ||||||
|       sudo: false |       sudo: false | ||||||
|       osx_image: xcode10 |       osx_image: xcode10.2 | ||||||
|       install: "./.travis/macos/deps.sh" |       install: "./.travis/macos/deps.sh" | ||||||
|       script: "./.travis/macos/build.sh" |       script: "./.travis/macos/build.sh" | ||||||
|       after_success: "./.travis/macos/upload.sh" |       after_success: "./.travis/macos/upload.sh" | ||||||
|  |  | ||||||
|  | @ -9,6 +9,7 @@ | ||||||
| #include <atomic> | #include <atomic> | ||||||
| #include <cstddef> | #include <cstddef> | ||||||
| #include <cstring> | #include <cstring> | ||||||
|  | #include <new> | ||||||
| #include <type_traits> | #include <type_traits> | ||||||
| #include <vector> | #include <vector> | ||||||
| #include "common/common_types.h" | #include "common/common_types.h" | ||||||
|  | @ -29,7 +30,7 @@ class RingBuffer { | ||||||
|     static_assert(capacity < std::numeric_limits<std::size_t>::max() / 2 / granularity); |     static_assert(capacity < std::numeric_limits<std::size_t>::max() / 2 / granularity); | ||||||
|     static_assert((capacity & (capacity - 1)) == 0, "capacity must be a power of two"); |     static_assert((capacity & (capacity - 1)) == 0, "capacity must be a power of two"); | ||||||
|     // Ensure lock-free.
 |     // Ensure lock-free.
 | ||||||
|     static_assert(std::atomic<std::size_t>::is_always_lock_free); |     static_assert(std::atomic_size_t::is_always_lock_free); | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     /// Pushes slots into the ring buffer
 |     /// Pushes slots into the ring buffer
 | ||||||
|  | @ -100,10 +101,22 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     // It is important to align the below variables for performance reasons:
 |     // It is important to separate the below atomics for performance reasons:
 | ||||||
|     // Having them on the same cache-line would result in false-sharing between them.
 |     // 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}; |     // TODO: Remove this ifdef whenever clang and GCC support
 | ||||||
|     alignas(128) std::atomic<std::size_t> m_write_index{0}; |     //       std::hardware_destructive_interference_size.
 | ||||||
|  | #if defined(_MSC_VER) && _MSC_VER >= 1911 | ||||||
|  |     static constexpr std::size_t padding_size = | ||||||
|  |         std::hardware_destructive_interference_size - sizeof(std::atomic_size_t); | ||||||
|  | #else | ||||||
|  |     static constexpr std::size_t padding_size = 128 - sizeof(std::atomic_size_t); | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  |     std::atomic_size_t m_read_index{0}; | ||||||
|  |     char padding1[padding_size]; | ||||||
|  | 
 | ||||||
|  |     std::atomic_size_t m_write_index{0}; | ||||||
|  |     char padding2[padding_size]; | ||||||
| 
 | 
 | ||||||
|     std::array<T, granularity * capacity> m_data; |     std::array<T, granularity * capacity> m_data; | ||||||
| }; | }; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue