diff --git a/src/vulkan/context.c b/src/vulkan/context.c
index 6ce7e1d4df7faaa8176f03aa1689db307b111a76..0445b07f046898244c653896d5d85720495b80b0 100644
--- a/src/vulkan/context.c
+++ b/src/vulkan/context.c
@@ -47,6 +47,7 @@ struct vk_ext {
 
 // Table of optional vulkan instance extensions
 static const char *vk_instance_extensions[] = {
+    VK_KHR_SURFACE_EXTENSION_NAME,
     VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME,
     VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
     VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME,
@@ -65,6 +66,12 @@ static const struct vk_fun vk_inst_funs[] = {
     VK_INST_FUN(GetPhysicalDeviceProperties),
     VK_INST_FUN(GetPhysicalDeviceProperties2KHR),
     VK_INST_FUN(GetPhysicalDeviceQueueFamilyProperties),
+
+    // These are not actually mandatory, but they're universal enough that we
+    // just load them unconditionally (in lieu of not having proper support for
+    // loading arbitrary instance extensions). Their use is generally guarded
+    // behind various VkSurfaceKHR values already being provided by the API
+    // user (implying this extension is loaded).
     VK_INST_FUN(GetPhysicalDeviceSurfaceCapabilitiesKHR),
     VK_INST_FUN(GetPhysicalDeviceSurfaceFormatsKHR),
     VK_INST_FUN(GetPhysicalDeviceSurfacePresentModesKHR),