summaryrefslogtreecommitdiffstats
path: root/src/video_core/buffer_cache
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2020-04-22 17:14:40 +0200
committerFernando Sahmkow <fsahmkow27@gmail.com>2020-04-22 17:36:27 +0200
commit4e37f1b1130b083b42f21029155e5a2e4e9a9eb3 (patch)
tree751ecd6d575de14bb9b7bf5a9bc0e2e28c9fa1e3 /src/video_core/buffer_cache
parentAsync GPU: Correct flushing behavior to be similar to old async GPU behavior. (diff)
downloadyuzu-4e37f1b1130b083b42f21029155e5a2e4e9a9eb3.tar
yuzu-4e37f1b1130b083b42f21029155e5a2e4e9a9eb3.tar.gz
yuzu-4e37f1b1130b083b42f21029155e5a2e4e9a9eb3.tar.bz2
yuzu-4e37f1b1130b083b42f21029155e5a2e4e9a9eb3.tar.lz
yuzu-4e37f1b1130b083b42f21029155e5a2e4e9a9eb3.tar.xz
yuzu-4e37f1b1130b083b42f21029155e5a2e4e9a9eb3.tar.zst
yuzu-4e37f1b1130b083b42f21029155e5a2e4e9a9eb3.zip
Diffstat (limited to 'src/video_core/buffer_cache')
-rw-r--r--src/video_core/buffer_cache/buffer_cache.h15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h
index f3aa35295..510f11089 100644
--- a/src/video_core/buffer_cache/buffer_cache.h
+++ b/src/video_core/buffer_cache/buffer_cache.h
@@ -153,8 +153,8 @@ public:
bool MustFlushRegion(VAddr addr, std::size_t size) {
std::lock_guard lock{mutex};
- std::vector<MapInterval> objects = GetMapsInRange(addr, size);
- return std::any_of(objects.begin(), objects.end(), [](const MapInterval& map) {
+ const std::vector<MapInterval> objects = GetMapsInRange(addr, size);
+ return std::any_of(objects.cbegin(), objects.cend(), [](const MapInterval& map) {
return map->IsModified() && map->IsRegistered();
});
}
@@ -176,7 +176,7 @@ public:
for (const auto& object : GetMapsInRange(addr, size)) {
if (object->IsMemoryMarked() && object->IsRegistered()) {
- Unmark(object);
+ UnmarkMemory(object);
object->SetSyncPending(true);
marked_for_unregister.emplace_back(object);
}
@@ -217,10 +217,7 @@ public:
}
bool ShouldWaitAsyncFlushes() const {
- if (committed_flushes.empty()) {
- return false;
- }
- return committed_flushes.front() != nullptr;
+ return !committed_flushes.empty() && committed_flushes.front() != nullptr;
}
bool HasUncommittedFlushes() const {
@@ -294,7 +291,7 @@ protected:
}
}
- void Unmark(const MapInterval& map) {
+ void UnmarkMemory(const MapInterval& map) {
if (!map->IsMemoryMarked()) {
return;
}
@@ -305,7 +302,7 @@ protected:
/// Unregisters an object from the cache
void Unregister(const MapInterval& map) {
- Unmark(map);
+ UnmarkMemory(map);
map->MarkAsRegistered(false);
if (map->IsSyncPending()) {
marked_for_unregister.remove(map);