aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/query_cache
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/query_cache')
-rw-r--r--src/video_core/query_cache/query_cache.h10
-rw-r--r--src/video_core/query_cache/query_cache_base.h3
2 files changed, 13 insertions, 0 deletions
diff --git a/src/video_core/query_cache/query_cache.h b/src/video_core/query_cache/query_cache.h
index 245ab1996c..60ca50eb1f 100644
--- a/src/video_core/query_cache/query_cache.h
+++ b/src/video_core/query_cache/query_cache.h
@@ -520,6 +520,16 @@ bool QueryCacheBase<Traits>::HasUncommittedFlushes() const {
}
template <typename Traits>
+bool QueryCacheBase<Traits>::HasPendingFenceWork() const {
+ bool result = false;
+ impl->ForEachStreamer([&result](StreamerInterface* streamer) {
+ result |= streamer->HasUnsyncedQueries() || streamer->HasPendingSync();
+ return result;
+ });
+ return result;
+}
+
+template <typename Traits>
bool QueryCacheBase<Traits>::ShouldWaitAsyncFlushes() {
std::scoped_lock lk(impl->flush_guard);
return !impl->flushes_pending.empty() && impl->flushes_pending.front() != 0ULL;
diff --git a/src/video_core/query_cache/query_cache_base.h b/src/video_core/query_cache/query_cache_base.h
index d73e9039f7..5a60e42986 100644
--- a/src/video_core/query_cache/query_cache_base.h
+++ b/src/video_core/query_cache/query_cache_base.h
@@ -109,6 +109,9 @@ public:
bool HasUncommittedFlushes() const;
+ /// Whether a new fence has queries to flush or host writes to sync for this cache.
+ bool HasPendingFenceWork() const;
+
bool ShouldWaitAsyncFlushes();
void PopAsyncFlushes();