MayaFlux 0.1.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 12 of file VKContext.cpp.

14{
15 m_graphics_config = graphics_config;
16
17 if (graphics_config.requested_api != GlobalGraphicsConfig::GraphicsApi::VULKAN) {
19 "Vulkan context initialization requested, but graphics API is not set to Vulkan!");
20 return false;
21 }
22
23 std::vector<const char*> extensions;
24 if (graphics_config.windowing_backend == GlobalGraphicsConfig::WindowingBackend::GLFW) {
25
26 GLFWSingleton::configure(graphics_config.glfw_preinit_config);
28
29 for (const char* ext : required_extensions) {
30 if (std::ranges::find(extensions, ext) == extensions.end()) {
31 extensions.push_back(ext);
32 }
33 }
34 } else {
35 extensions = required_extensions;
36 }
37
38 if (!m_instance.initialize(enable_validation, extensions)) {
40 "Failed to initialize Vulkan instance!");
41 return false;
42 }
43
46 "Failed to initialize Vulkan device!");
47 cleanup();
48 return false;
49 }
50
52 "Vulkan context initialized successfully.");
53 return true;
54}
#define MF_INFO(comp, ctx,...)
#define MF_ERROR(comp, ctx,...)
static std::vector< const char * > get_required_instance_extensions()
Retrieves the list of required Vulkan instance extensions for GLFW.
static void configure(const GlfwPreInitConfig &config)
Configures GLFW with pre-initialization hints.
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::Core::GLFWSingleton::configure(), MayaFlux::Journal::Core, MayaFlux::Core::VKInstance::get_instance(), MayaFlux::Core::GLFWSingleton::get_required_instance_extensions(), MayaFlux::Core::GlobalGraphicsConfig::GLFW, MayaFlux::Core::GlobalGraphicsConfig::glfw_preinit_config, 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: