summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_scheduler.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_scheduler.h')
-rw-r--r--src/video_core/renderer_vulkan/vk_scheduler.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_scheduler.h b/src/video_core/renderer_vulkan/vk_scheduler.h
index a40bb8bcd..40215c4c5 100644
--- a/src/video_core/renderer_vulkan/vk_scheduler.h
+++ b/src/video_core/renderer_vulkan/vk_scheduler.h
@@ -86,6 +86,10 @@ public:
/// Waits for the given tick to trigger on the GPU.
void Wait(u64 tick) {
+ if (tick >= master_semaphore->CurrentTick()) {
+ // Make sure we are not waiting for the current tick without signalling
+ Flush();
+ }
master_semaphore->Wait(tick);
}
@@ -155,15 +159,24 @@ private:
return true;
}
+ void MarkSubmit() {
+ submit = true;
+ }
+
bool Empty() const {
return command_offset == 0;
}
+ bool HasSubmit() const {
+ return submit;
+ }
+
private:
Command* first = nullptr;
Command* last = nullptr;
size_t command_offset = 0;
+ bool submit = false;
alignas(std::max_align_t) std::array<u8, 0x8000> data{};
};
@@ -176,6 +189,8 @@ private:
void WorkerThread();
+ void AllocateWorkerCommandBuffer();
+
void SubmitExecution(VkSemaphore semaphore);
void AllocateNewContext();