summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2020-03-31 20:27:44 -0300
committerGravatar ReinUsesLisp2020-03-31 21:32:07 -0300
commitd85ca0ab33a90285b7120a8a85aa4de1680f4ae7 (patch)
tree881f1c9cb0d4ea25a06e515c695ff0e5bd9856a1 /src
parentrenderer_vulkan/wrapper: Add instance handle (diff)
downloadyuzu-d85ca0ab33a90285b7120a8a85aa4de1680f4ae7.tar.gz
yuzu-d85ca0ab33a90285b7120a8a85aa4de1680f4ae7.tar.xz
yuzu-d85ca0ab33a90285b7120a8a85aa4de1680f4ae7.zip
renderer_vulkan/wrapper: Add queue handle
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_vulkan/wrapper.cpp11
-rw-r--r--src/video_core/renderer_vulkan/wrapper.h25
2 files changed, 36 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/wrapper.cpp b/src/video_core/renderer_vulkan/wrapper.cpp
index 2e743e926..1ec7a542d 100644
--- a/src/video_core/renderer_vulkan/wrapper.cpp
+++ b/src/video_core/renderer_vulkan/wrapper.cpp
@@ -409,4 +409,15 @@ DebugCallback Instance::TryCreateDebugCallback(
409 return DebugCallback(messenger, handle, *dld); 409 return DebugCallback(messenger, handle, *dld);
410} 410}
411 411
412std::vector<VkCheckpointDataNV> Queue::GetCheckpointDataNV(const DeviceDispatch& dld) const {
413 if (!dld.vkGetQueueCheckpointDataNV) {
414 return {};
415 }
416 u32 num;
417 dld.vkGetQueueCheckpointDataNV(queue, &num, nullptr);
418 std::vector<VkCheckpointDataNV> checkpoints(num);
419 dld.vkGetQueueCheckpointDataNV(queue, &num, checkpoints.data());
420 return checkpoints;
421}
422
412} // namespace Vulkan::vk 423} // namespace Vulkan::vk
diff --git a/src/video_core/renderer_vulkan/wrapper.h b/src/video_core/renderer_vulkan/wrapper.h
index 8eb31e77d..a4077136b 100644
--- a/src/video_core/renderer_vulkan/wrapper.h
+++ b/src/video_core/renderer_vulkan/wrapper.h
@@ -559,4 +559,29 @@ public:
559 DebugCallback TryCreateDebugCallback(PFN_vkDebugUtilsMessengerCallbackEXT callback) noexcept; 559 DebugCallback TryCreateDebugCallback(PFN_vkDebugUtilsMessengerCallbackEXT callback) noexcept;
560}; 560};
561 561
562class Queue {
563public:
564 /// Construct an empty queue handle.
565 constexpr Queue() noexcept = default;
566
567 /// Construct a queue handle.
568 constexpr Queue(VkQueue queue, const DeviceDispatch& dld) noexcept : queue{queue}, dld{&dld} {}
569
570 /// Returns the checkpoint data.
571 /// @note Returns an empty vector when the function pointer is not present.
572 std::vector<VkCheckpointDataNV> GetCheckpointDataNV(const DeviceDispatch& dld) const;
573
574 void Submit(Span<VkSubmitInfo> submit_infos, VkFence fence) const {
575 Check(dld->vkQueueSubmit(queue, submit_infos.size(), submit_infos.data(), fence));
576 }
577
578 VkResult Present(const VkPresentInfoKHR& present_info) const noexcept {
579 return dld->vkQueuePresentKHR(queue, &present_info);
580 }
581
582private:
583 VkQueue queue = nullptr;
584 const DeviceDispatch* dld = nullptr;
585};
586
562} // namespace Vulkan::vk 587} // namespace Vulkan::vk