render/vulkan: negotiate instance API version

Use vkEnumerateInstanceVersion to pick the instance API version and load
vkGetPhysicalDevice*2 entrypoints via core or KHR depending on that.
This avoids API version validation errors when running with Vulkan 1.0.
This commit is contained in:
Furkan Sahin 2026-06-02 17:57:55 -04:00
parent 280cc0742a
commit c26c8ba315
2 changed files with 70 additions and 18 deletions

View file

@ -19,14 +19,15 @@ struct wlr_vk_texture;
struct wlr_vk_instance {
VkInstance instance;
VkDebugUtilsMessengerEXT messenger;
uint32_t api_version;
struct {
PFN_vkCreateDebugUtilsMessengerEXT createDebugUtilsMessengerEXT;
PFN_vkDestroyDebugUtilsMessengerEXT destroyDebugUtilsMessengerEXT;
} api;
PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR;
PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR;
PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2;
PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;
};
// Creates and initializes a vulkan instance.