diff --git a/src/xr.c b/src/xr.c index 11c348e04d2cc2d6be1eb7a70dd9fcdb948a8ef7..30407376830deb6af6581504ecc2dedad72bb898 100644 --- a/src/xr.c +++ b/src/xr.c @@ -100,6 +100,15 @@ _check_vk_extension() XR_KHR_VULKAN_ENABLE_EXTENSION_NAME)) return false; + + result = + is_extension_supported(XR_EXTX_OVERLAY_EXTENSION_NAME, + instanceExtensionProperties, instanceExtensionCount); + if (!xr_result(result, + "Runtime does not support required instance extension %s\n", + XR_EXTX_OVERLAY_EXTENSION_NAME)) + return false; + return true; } @@ -135,13 +144,14 @@ static bool _create_instance(xr_example* self) { const char* const enabledExtensions[] = { - XR_KHR_VULKAN_ENABLE_EXTENSION_NAME + XR_KHR_VULKAN_ENABLE_EXTENSION_NAME, + XR_EXTX_OVERLAY_EXTENSION_NAME, }; XrInstanceCreateInfo instanceCreateInfo = { .type = XR_TYPE_INSTANCE_CREATE_INFO, .createFlags = 0, - .enabledExtensionCount = 1, + .enabledExtensionCount = ARRAY_SIZE(enabledExtensions), .enabledExtensionNames = enabledExtensions, .enabledApiLayerCount = 0, .applicationInfo = { @@ -787,8 +797,15 @@ xr_init_post_vk(xr_example* self, uint32_t queue_family_index, uint32_t queue_index) { + XrSessionCreateInfoOverlayEXTX overlay_info = { + .type = XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX, + .sessionLayersPlacement = 1, + }; + + self->graphics_binding = (XrGraphicsBindingVulkanKHR){ .type = XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR, + .next = &overlay_info, .instance = instance, .physicalDevice = physical_device, .device = device, diff --git a/src/xr.h b/src/xr.h index 2aab7d9f584fe64b1e0ecda86b453590b726f3d6..628fcaee70ec615f3e470836616193d96b80db10 100644 --- a/src/xr.h +++ b/src/xr.h @@ -20,9 +20,9 @@ #include <openxr/openxr.h> #include <openxr/openxr_platform.h> -#define ENABLE_SKY_LAYER 1 +#define ENABLE_SKY_LAYER 0 #define ENABLE_GEARS_LAYER 1 -#define ENABLE_QUAD_LAYERS 1 +#define ENABLE_QUAD_LAYERS 0 #if ENABLE_QUAD_LAYERS #include "xr_quad.h"