mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	renderer_vulkan/wrapper: Add queue handle
This commit is contained in:
		
							parent
							
								
									151ddcf419
								
							
						
					
					
						commit
						d85ca0ab33
					
				@ -409,4 +409,15 @@ DebugCallback Instance::TryCreateDebugCallback(
 | 
			
		||||
    return DebugCallback(messenger, handle, *dld);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::vector<VkCheckpointDataNV> Queue::GetCheckpointDataNV(const DeviceDispatch& dld) const {
 | 
			
		||||
    if (!dld.vkGetQueueCheckpointDataNV) {
 | 
			
		||||
        return {};
 | 
			
		||||
    }
 | 
			
		||||
    u32 num;
 | 
			
		||||
    dld.vkGetQueueCheckpointDataNV(queue, &num, nullptr);
 | 
			
		||||
    std::vector<VkCheckpointDataNV> checkpoints(num);
 | 
			
		||||
    dld.vkGetQueueCheckpointDataNV(queue, &num, checkpoints.data());
 | 
			
		||||
    return checkpoints;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace Vulkan::vk
 | 
			
		||||
 | 
			
		||||
@ -559,4 +559,29 @@ public:
 | 
			
		||||
    DebugCallback TryCreateDebugCallback(PFN_vkDebugUtilsMessengerCallbackEXT callback) noexcept;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class Queue {
 | 
			
		||||
public:
 | 
			
		||||
    /// Construct an empty queue handle.
 | 
			
		||||
    constexpr Queue() noexcept = default;
 | 
			
		||||
 | 
			
		||||
    /// Construct a queue handle.
 | 
			
		||||
    constexpr Queue(VkQueue queue, const DeviceDispatch& dld) noexcept : queue{queue}, dld{&dld} {}
 | 
			
		||||
 | 
			
		||||
    /// Returns the checkpoint data.
 | 
			
		||||
    /// @note Returns an empty vector when the function pointer is not present.
 | 
			
		||||
    std::vector<VkCheckpointDataNV> GetCheckpointDataNV(const DeviceDispatch& dld) const;
 | 
			
		||||
 | 
			
		||||
    void Submit(Span<VkSubmitInfo> submit_infos, VkFence fence) const {
 | 
			
		||||
        Check(dld->vkQueueSubmit(queue, submit_infos.size(), submit_infos.data(), fence));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    VkResult Present(const VkPresentInfoKHR& present_info) const noexcept {
 | 
			
		||||
        return dld->vkQueuePresentKHR(queue, &present_info);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    VkQueue queue = nullptr;
 | 
			
		||||
    const DeviceDispatch* dld = nullptr;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Vulkan::vk
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user