SpiecsEngine
 
Loading...
Searching...
No Matches

◆ IsQueueMeetDemand()

bool Spices::VulkanDevice::IsQueueMeetDemand ( const VkPhysicalDevice & device,
const VkSurfaceKHR & surface )
private

Check all Queue we need meet;.

Parameters
[in]deviceVkPhysicalDevice.
[in]surfaceVkSurfaceKHR.
Returns
Returns true if all Extension we need meet.

Get all physicaldevice queue nums.

Get all physicaldevice queue that supported.

Check queue identify.

Get graphic queue identify.

Get present queue identify.

Get compute queue identify.

Get transfer queue identify.

Get all physicaldevice queue nums.

Get all physicaldevice queue that supported.

Check queue identify.

Get graphic queue identify.

Get present queue identify.

Get compute queue identify.

Get transfer queue identify.

Definition at line 651 of file VulkanDevice.cpp.

652 {
654
658 uint32_t queueFamilyCount = 0;
659 vkGetPhysicalDeviceQueueFamilyProperties(device, &queueFamilyCount, nullptr);
660
664 std::vector<VkQueueFamilyProperties> queueFamilies(queueFamilyCount);
665 vkGetPhysicalDeviceQueueFamilyProperties(device, &queueFamilyCount, queueFamilies.data());
666
670 for (uint32_t i = 0; i < queueFamilies.size(); i++) {
671 const auto& queueFamily = queueFamilies[i];
672
676 if (queueFamily.queueFlags & VK_QUEUE_GRAPHICS_BIT)
677 {
680
681 VkBool32 presentSupport = false;
682 vkGetPhysicalDeviceSurfaceSupportKHR(device, i, surface, &presentSupport);
683
687 if (presentSupport)
688 {
690 }
691 }
692 else
693 {
697 if (queueFamily.queueFlags & VK_QUEUE_COMPUTE_BIT)
698 {
701 }
702
706 if (queueFamily.queueFlags & VK_QUEUE_TRANSFER_BIT)
707 {
709 }
710 }
711
712 if (m_QueueHelper.isComplete()) return true;
713 }
714
715 return false;
716 }
#define SPICES_PROFILE_ZONE
QueueHelper m_QueueHelper
QueueHelper.
VulkanState & m_VulkanState
The global VulkanState Referenced from VulkanRenderBackend.
std::optional< uint32_t > graphicqueuefamily
The graphic queue's in used identify.
std::optional< uint32_t > presentqueuefamily
The present queue's in used identify.
std::optional< uint32_t > transferqueuefamily
The transfer queue's in used identify.
std::optional< uint32_t > computequeuefamily
The compute queue's in used identify.
bool isComplete() const
Whether all queues that we need is valid.
uint32_t m_ComputeQueueFamily
uint32_t m_GraphicQueueFamily