Axmol 3.0.0-89d6d9a
Loading...
Searching...
No Matches
VulkanInterop Class Reference

Optional Vulkan initialization hook for external graphics interop. More...

#include <VulkanInterop.h>

Public Member Functions

virtual void collectInstanceExtensions (std::vector< std::string > &extensions)
 Appends required Vulkan instance extensions.
virtual VkPhysicalDevice selectPhysicalDevice (VkInstance instance, const VkPhysicalDevice *devices, uint32_t deviceCount)
 Selects or constrains the physical device.
virtual void collectDeviceExtensions (VkPhysicalDevice physicalDevice, std::vector< std::string > &extensions)
 Appends required Vulkan device extensions.
virtual void configureDeviceFeatures (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures &enabledFeatures, VulkanFeatureChain &featureChain)
 Enables required or preferred device features.
virtual void setVulkanBinding (const VulkanBinding &binding)
 Receives the final Vulkan objects created and owned by the engine.
virtual void clearVulkanBinding ()
 Called before the engine destroys the Vulkan device/instance.

Detailed Description

Optional Vulkan initialization hook for external graphics interop.

VulkanInterop is intentionally Vulkan-only and does not depend on OpenXR or any other external runtime. Implementations may live in higher layers, such as platform/openxr, and register themselves before the Vulkan driver is initialized.

Typical responsibilities:

  • append required VkInstance extensions before vkCreateInstance();
  • constrain/select the VkPhysicalDevice before vkCreateDevice();
  • append required VkDevice extensions before vkCreateDevice();
  • enable required device features before vkCreateDevice();
  • receive the final engine-owned Vulkan binding after device creation.

Member Function Documentation

◆ collectInstanceExtensions()

virtual void collectInstanceExtensions ( std::vector< std::string > & extensions)
inlinevirtual

Appends required Vulkan instance extensions.

Called before vkCreateInstance().

The implementation should append extension names only. The caller is responsible for deduplication and conversion to const char* arrays.

◆ selectPhysicalDevice()

virtual VkPhysicalDevice selectPhysicalDevice ( VkInstance instance,
const VkPhysicalDevice * devices,
uint32_t deviceCount )
inlinevirtual

Selects or constrains the physical device.

Called after vkCreateInstance() and vkEnumeratePhysicalDevices(), before the engine applies its normal adapter selection.

Return VK_NULL_HANDLE to let the Vulkan driver use its default adapter selection logic.

◆ collectDeviceExtensions()

virtual void collectDeviceExtensions ( VkPhysicalDevice physicalDevice,
std::vector< std::string > & extensions )
inlinevirtual

Appends required Vulkan device extensions.

Called after the final VkPhysicalDevice has been selected, before vkCreateDevice().

The implementation should append extension names only. The caller is responsible for deduplication and conversion to const char* arrays.

◆ configureDeviceFeatures()

virtual void configureDeviceFeatures ( VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures & enabledFeatures,
VulkanFeatureChain & featureChain )
inlinevirtual

Enables required or preferred device features.

Called before vkCreateDevice().

Implementations may:

  • set fields on enabledFeatures for Vulkan 1.0 core features;
  • push externally-owned feature structs into featureChain.

Feature structs pushed into featureChain must remain alive until vkCreateDevice() returns.

◆ setVulkanBinding()

virtual void setVulkanBinding ( const VulkanBinding & binding)
inlinevirtual

Receives the final Vulkan objects created and owned by the engine.

Called after vkCreateDevice() and vkGetDeviceQueue().

The implementation must not destroy these handles.

◆ clearVulkanBinding()

virtual void clearVulkanBinding ( )
inlinevirtual

Called before the engine destroys the Vulkan device/instance.

Implementations should drop cached Vulkan handles here.


The documentation for this class was generated from the following file:
  • VulkanInterop.h