MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ pick_physical_device()

bool MayaFlux::Core::VKDevice::pick_physical_device ( vk::Instance  instance,
vk::SurfaceKHR  temp_surface 
)
private

Pick a suitable physical device (GPU)

Parameters
instanceVulkan instance
temp_surfaceTemporary surface for presentation support checks
Returns
true if a suitable device was found

Definition at line 72 of file VKDevice.cpp.

73{
74 vk::Instance vk_instance(instance);
75 auto devices = vk_instance.enumeratePhysicalDevices();
76
77 if (devices.empty()) {
79 std::source_location::current(),
80 "Failed to find GPUs with Vulkan support!");
81 }
82
83 for (const auto& device : devices) {
84 QueueFamilyIndices indices = find_queue_families(device, nullptr);
85
86 if (indices.graphics_family.has_value()) {
87 m_physical_device = device;
88 m_queue_families = indices;
89
90 vk::PhysicalDeviceProperties props = device.getProperties();
92 "Selected GPU: {}", props.deviceName.data());
93 return true;
94 }
95 }
96
98 std::source_location::current(),
99 "Failed to find a suitable GPU!");
100 return false;
101}
#define MF_PRINT(comp, ctx,...)
vk::PhysicalDevice m_physical_device
Selected physical device (GPU)
Definition VKDevice.hpp:109
QueueFamilyIndices find_queue_families(vk::PhysicalDevice device, vk::SurfaceKHR surface=nullptr)
Find queue families on the given physical device.
Definition VKDevice.cpp:103
QueueFamilyIndices m_queue_families
Indices of required queue families.
Definition VKDevice.hpp:116
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.

References MayaFlux::Journal::Core, find_queue_families(), MayaFlux::Core::QueueFamilyIndices::graphics_family, MayaFlux::Journal::GraphicsBackend, m_physical_device, m_queue_families, and MF_PRINT.

Referenced by initialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: