MayaFlux 0.4.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(GLFW_BACKEND)
40 if (graphics_config.windowing_backend == GlobalGraphicsConfig::WindowingBackend::GLFW) {
41 GLFWSingleton::configure(graphics_config.glfw_preinit_config);
42 for (const char* ext : GLFWSingleton::get_required_instance_extensions()) {
43 if (!std::ranges::contains(extensions, ext))
44 extensions.push_back(ext);
45 }
46 }
47#elif defined(WIN32_BACKEND)
48 extensions.push_back(VK_KHR_SURFACE_EXTENSION_NAME);
49 extensions.push_back(VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
50#elif defined(WAYLAND_BACKEND)
51 extensions.push_back(VK_KHR_SURFACE_EXTENSION_NAME);
52 extensions.push_back(VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME);
53#endif
54
55 if (!m_instance.initialize(enable_validation, extensions)) {
57 "Failed to initialize Vulkan instance!");
58 return false;
59 }
60
63 "Failed to initialize Vulkan device!");
64 cleanup();
65 return false;
66 }
67
69 "Vulkan context initialized successfully.");
70 return true;
71}
#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, vk::SurfaceKHR temp_surface, const GraphicsBackendInfo &backend_info)
Initialize device (pick physical device and create logical device)
Definition VKDevice.cpp:49
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::Journal::Core, MayaFlux::Core::VKInstance::get_instance(), MayaFlux::Core::GlobalGraphicsConfig::GLFW, 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: