diff --git a/include/render/vulkan.h b/include/render/vulkan.h index 145395da5..77664e5fd 100644 --- a/include/render/vulkan.h +++ b/include/render/vulkan.h @@ -26,6 +26,7 @@ struct wlr_vk_instance { } api; PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR; + PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR; }; // Creates and initializes a vulkan instance. diff --git a/render/vulkan/vulkan.c b/render/vulkan/vulkan.c index aa69733d2..9a0a82bcc 100644 --- a/render/vulkan/vulkan.c +++ b/render/vulkan/vulkan.c @@ -202,6 +202,13 @@ struct wlr_vk_instance *vulkan_instance_create(bool debug) { goto error; } + ini->vkGetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR) + vkGetInstanceProcAddr(ini->instance, "vkGetPhysicalDeviceFeatures2KHR"); + if (!ini->vkGetPhysicalDeviceFeatures2KHR) { + wlr_log(WLR_ERROR, "vkGetPhysicalDeviceFeatures2KHR not found"); + goto error; + } + return ini; @@ -555,7 +562,7 @@ struct wlr_vk_device *vulkan_device_create(struct wlr_vk_instance *ini, .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, .pNext = &phdev_sampler_ycbcr_features, }; - vkGetPhysicalDeviceFeatures2(phdev, &phdev_features); + ini->vkGetPhysicalDeviceFeatures2KHR(phdev, &phdev_features); dev->sampler_ycbcr_conversion = phdev_sampler_ycbcr_features.samplerYcbcrConversion; wlr_log(WLR_DEBUG, "Sampler YCbCr conversion %s",