Enable VK_KHR_swapchain for instances.
This is a specific instance of a general capability. Beginning with Vulkan
1.1, physical-device commands can part of device extensions, and can be called
before the application creates a device. vkGetInstanceProcAddr only returns
commands for enabled extensions, and so we must internally enable device
extensions inside of the instance. This commit enables VK_KHR_swapchain so
that GIPA will return vkGetPhysicalDevicePresentRectanglesKHR.
Bug: b/71744435
Test: Modified LunarG cube demo that can successfully GIPA the command.
Change-Id: Iefb9f82d3f21e110d45f7d6aae7c8c9ea3af20b9
diff --git a/vulkan/libvulkan/driver.cpp b/vulkan/libvulkan/driver.cpp
index 681f8b7..80727c5 100644
--- a/vulkan/libvulkan/driver.cpp
+++ b/vulkan/libvulkan/driver.cpp
@@ -402,6 +402,12 @@
for (uint32_t i = 0; i < ext_count; i++)
FilterExtension(ext_names[i]);
+ // Enable device extensions that contain physical-device commands, so that
+ // vkGetInstanceProcAddr will return those physical-device commands.
+ if (is_instance_) {
+ hook_extensions_.set(ProcHook::KHR_swapchain);
+ }
+
ext_names = extension_filter_.names;
ext_count = extension_filter_.name_count;