aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/gpu.cpp
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-29 03:39:52 -0400
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-29 03:39:52 -0400
commite17fd9cef116a088f080ca502951e500864a58b6 (patch)
treee7ff65f614622515d6a2e4263521909eea89a5d8 /src/video_core/gpu.cpp
parentea6c1193fbfa95e586bb6d129dc684163a12cb3e (diff)
parent80c79333fe6fd28a31b65b997f1cbf2987711c91 (diff)
Merge Switch 2 work from local Eden (nx2 at b0dd3fe)
Diffstat (limited to 'src/video_core/gpu.cpp')
-rw-r--r--src/video_core/gpu.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp
index 1621b24125..6441b9511a 100644
--- a/src/video_core/gpu.cpp
+++ b/src/video_core/gpu.cpp
@@ -206,6 +206,10 @@ struct GPU::Impl {
gpu_thread.SubmitList(channel, std::move(entries), is_async);
}
+ void RunInOrder(std::function<void()>&& func) {
+ gpu_thread.Run(std::move(func), is_async);
+ }
+
/// Notify rasterizer that any caches of the specified region should be flushed to Switch memory
void FlushRegion(DAddr addr, u64 size) {
gpu_thread.FlushRegion(addr, size, is_async);
@@ -407,6 +411,10 @@ u64 GPU::RequestFlush(DAddr addr, std::size_t size) {
});
}
+u64 GPU::RunOnGpuThread(std::function<void()>&& action) {
+ return impl->RequestSyncOperation(std::move(action));
+}
+
u64 GPU::CurrentSyncRequestFence() const {
return impl->CurrentSyncRequestFence();
}
@@ -530,6 +538,10 @@ void GPU::FlushRegion(DAddr addr, u64 size) {
impl->FlushRegion(addr, size);
}
+void GPU::RunInOrder(std::function<void()>&& func) {
+ impl->RunInOrder(std::move(func));
+}
+
void GPU::InvalidateRegion(DAddr addr, u64 size, bool preserve_gpu_writes) {
impl->InvalidateRegion(addr, size, preserve_gpu_writes);
}