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

◆ initialize()

bool MayaFlux::Core::VKContext::initialize ( const GlobalGraphicsConfig &  graphics_config,
bool  enable_validation = true,
const std::vector< const char * > &  required_extensions = {} 
)

Initialize Vulkan context.

Parameters
global_configGlobal graphics configuration
enable_validationEnable validation layers
required_extensionsRequired instance extensions
Returns
true if successful

Definition at line 26 of file VKContext.cpp.

28{
29 m_graphics_config = graphics_config;
30
31 if (graphics_config.requested_api != GlobalGraphicsConfig::GraphicsApi::VULKAN) {
33 "Vulkan context initialization requested, but graphics API is not set to Vulkan!");
34 return false;
35 }
36
37 std::vector<const char*> extensions = required_extensions;
38
39#if defined(COCOA_BACKEND)
40 if (graphics_config.windowing_backend == GlobalGraphicsConfig::WindowingBackend::COCOA) {
41 for (const char* ext : { VK_KHR_SURFACE_EXTENSION_NAME, VK_EXT_METAL_SURFACE_EXTENSION_NAME }) {
42 if (std::ranges::none_of(extensions, [ext](const char* e) { return std::strcmp(e, ext) == 0; }))
43 extensions.push_back(ext);
44 }
45 }
46#endif
47
48#if defined(WIN32_BACKEND)
49 extensions.push_back(VK_KHR_SURFACE_EXTENSION_NAME);
50 extensions.push_back(VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
51#elif defined(WAYLAND_BACKEND)
52 extensions.push_back(VK_KHR_SURFACE_EXTENSION_NAME);
53 extensions.push_back(VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME);
54#endif
55
56 if (!m_instance.initialize(enable_validation, extensions)) {
58 "Failed to initialize Vulkan instance!");
59 return false;
60 }
61
64 "Failed to initialize Vulkan device!");
65 cleanup();
66 return false;
67 }
68
70 "Vulkan context initialized successfully.");
71 return true;
72}
#define MF_INFO(comp, ctx,...)
#define MF_ERROR(comp, ctx,...)
void cleanup()
Cleanup all Vulkan resources.
GlobalGraphicsConfig m_graphics_config
bool initialize(vk::Instance instance, const GraphicsBackendInfo &backend_info)
Select a physical device and create the logical device.
Definition VKDevice.cpp:237
vk::Instance get_instance() const
Get the Vulkan instance handle.
bool initialize(bool enable_validation=true, const std::vector< const char * > &required_extensions={})
Initialize Vulkan instance.
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.
GraphicsBackendInfo backend_info
Graphics backend configuration.

References MayaFlux::Core::GlobalGraphicsConfig::backend_info, cleanup(), MayaFlux::Core::GlobalGraphicsConfig::COCOA, MayaFlux::Journal::Core, MayaFlux::Core::VKInstance::get_instance(), MayaFlux::Journal::GraphicsBackend, MayaFlux::Core::VKInstance::initialize(), MayaFlux::Core::VKDevice::initialize(), m_device, m_graphics_config, m_instance, MF_ERROR, MF_INFO, MayaFlux::Core::GlobalGraphicsConfig::requested_api, MayaFlux::Core::GlobalGraphicsConfig::VULKAN, and MayaFlux::Core::GlobalGraphicsConfig::windowing_backend.

+ Here is the call graph for this function: