diff options
| author | 2020-03-31 20:27:44 -0300 | |
|---|---|---|
| committer | 2020-03-31 21:32:07 -0300 | |
| commit | d85ca0ab33a90285b7120a8a85aa4de1680f4ae7 (patch) | |
| tree | 881f1c9cb0d4ea25a06e515c695ff0e5bd9856a1 /src | |
| parent | renderer_vulkan/wrapper: Add instance handle (diff) | |
| download | yuzu-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.cpp | 11 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/wrapper.h | 25 |
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 | ||
| 412 | std::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 | ||
| 562 | class Queue { | ||
| 563 | public: | ||
| 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 | |||
| 582 | private: | ||
| 583 | VkQueue queue = nullptr; | ||
| 584 | const DeviceDispatch* dld = nullptr; | ||
| 585 | }; | ||
| 586 | |||
| 562 | } // namespace Vulkan::vk | 587 | } // namespace Vulkan::vk |