summaryrefslogtreecommitdiff
path: root/src/video_core/fence_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/fence_manager.h')
-rw-r--r--src/video_core/fence_manager.h27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/video_core/fence_manager.h b/src/video_core/fence_manager.h
index 06cc12d5a..de6991ef6 100644
--- a/src/video_core/fence_manager.h
+++ b/src/video_core/fence_manager.h
@@ -74,8 +74,6 @@ public:
74 } 74 }
75 75
76 void WaitPendingFences() { 76 void WaitPendingFences() {
77 auto& gpu{system.GPU()};
78 auto& memory_manager{gpu.MemoryManager()};
79 while (!fences.empty()) { 77 while (!fences.empty()) {
80 TFence& current_fence = fences.front(); 78 TFence& current_fence = fences.front();
81 if (ShouldWait()) { 79 if (ShouldWait()) {
@@ -83,8 +81,8 @@ public:
83 } 81 }
84 PopAsyncFlushes(); 82 PopAsyncFlushes();
85 if (current_fence->IsSemaphore()) { 83 if (current_fence->IsSemaphore()) {
86 memory_manager.template Write<u32>(current_fence->GetAddress(), 84 gpu_memory.template Write<u32>(current_fence->GetAddress(),
87 current_fence->GetPayload()); 85 current_fence->GetPayload());
88 } else { 86 } else {
89 gpu.IncrementSyncPoint(current_fence->GetPayload()); 87 gpu.IncrementSyncPoint(current_fence->GetPayload());
90 } 88 }
@@ -93,13 +91,13 @@ public:
93 } 91 }
94 92
95protected: 93protected:
96 FenceManager(Core::System& system, VideoCore::RasterizerInterface& rasterizer, 94 explicit FenceManager(VideoCore::RasterizerInterface& rasterizer_, Tegra::GPU& gpu_,
97 TTextureCache& texture_cache, TTBufferCache& buffer_cache, 95 TTextureCache& texture_cache_, TTBufferCache& buffer_cache_,
98 TQueryCache& query_cache) 96 TQueryCache& query_cache_)
99 : system{system}, rasterizer{rasterizer}, texture_cache{texture_cache}, 97 : rasterizer{rasterizer_}, gpu{gpu_}, gpu_memory{gpu.MemoryManager()},
100 buffer_cache{buffer_cache}, query_cache{query_cache} {} 98 texture_cache{texture_cache_}, buffer_cache{buffer_cache_}, query_cache{query_cache_} {}
101 99
102 virtual ~FenceManager() {} 100 virtual ~FenceManager() = default;
103 101
104 /// Creates a Sync Point Fence Interface, does not create a backend fence if 'is_stubbed' is 102 /// Creates a Sync Point Fence Interface, does not create a backend fence if 'is_stubbed' is
105 /// true 103 /// true
@@ -113,16 +111,15 @@ protected:
113 /// Waits until a fence has been signalled by the host GPU. 111 /// Waits until a fence has been signalled by the host GPU.
114 virtual void WaitFence(TFence& fence) = 0; 112 virtual void WaitFence(TFence& fence) = 0;
115 113
116 Core::System& system;
117 VideoCore::RasterizerInterface& rasterizer; 114 VideoCore::RasterizerInterface& rasterizer;
115 Tegra::GPU& gpu;
116 Tegra::MemoryManager& gpu_memory;
118 TTextureCache& texture_cache; 117 TTextureCache& texture_cache;
119 TTBufferCache& buffer_cache; 118 TTBufferCache& buffer_cache;
120 TQueryCache& query_cache; 119 TQueryCache& query_cache;
121 120
122private: 121private:
123 void TryReleasePendingFences() { 122 void TryReleasePendingFences() {
124 auto& gpu{system.GPU()};
125 auto& memory_manager{gpu.MemoryManager()};
126 while (!fences.empty()) { 123 while (!fences.empty()) {
127 TFence& current_fence = fences.front(); 124 TFence& current_fence = fences.front();
128 if (ShouldWait() && !IsFenceSignaled(current_fence)) { 125 if (ShouldWait() && !IsFenceSignaled(current_fence)) {
@@ -130,8 +127,8 @@ private:
130 } 127 }
131 PopAsyncFlushes(); 128 PopAsyncFlushes();
132 if (current_fence->IsSemaphore()) { 129 if (current_fence->IsSemaphore()) {
133 memory_manager.template Write<u32>(current_fence->GetAddress(), 130 gpu_memory.template Write<u32>(current_fence->GetAddress(),
134 current_fence->GetPayload()); 131 current_fence->GetPayload());
135 } else { 132 } else {
136 gpu.IncrementSyncPoint(current_fence->GetPayload()); 133 gpu.IncrementSyncPoint(current_fence->GetPayload());
137 } 134 }