diff --git a/layer/VkLayer_window_system_integration.json b/layer/VkLayer_window_system_integration.json index 4bdeeaa..c6e3703 100644 --- a/layer/VkLayer_window_system_integration.json +++ b/layer/VkLayer_window_system_integration.json @@ -4,25 +4,29 @@ "name": "VK_LAYER_window_system_integration", "type": "GLOBAL", "library_path": "./libVkLayer_window_system_integration.so", - "api_version": "1.0.68", + "api_version": "1.2.191", "implementation_version": "1", "description": "Window system integration layer", - "functions": { - "vkGetInstanceProcAddr": "wsi_layer_vkGetInstanceProcAddr", - "vkGetDeviceProcAddr": "wsi_layer_vkGetDeviceProcAddr" - }, - "pre_instance_functions" : { - "vkEnumerateInstanceExtensionProperties" : "wsi_layer_vkEnumerateInstanceExtensionProperties" - }, "instance_extensions": [ {"name" : "VK_EXT_headless_surface", "spec_version" : "1"}, - {"name" : "VK_KHR_wayland_surface", "spec_version" : "1"}, - {"name" : "VK_KHR_surface", "spec_version" : "1"} + {"name" : "VK_KHR_wayland_surface", "spec_version" : "6"}, + {"name" : "VK_KHR_surface", "spec_version" : "25"} ], "device_extensions": [ { "name" : "VK_KHR_swapchain", - "spec_version" : "1" + "spec_version" : "70", + "entrypoints": [ + "vkAcquireNextImageKHR", + "vkCreateSwapchainKHR", + "vkDestroySwapchainKHR", + "vkGetSwapchainImagesKHR", + "vkQueuePresentKHR", + "vkAcquireNextImage2KHR", + "vkGetDeviceGroupPresentCapabilitiesKHR", + "vkGetDeviceGroupSurfacePresentModesKHR", + "vkGetPhysicalDevicePresentRectanglesKHR" + ] } ], "enable_environment": { diff --git a/layer/layer.cpp b/layer/layer.cpp index be2f2a1..e4208f1 100644 --- a/layer/layer.cpp +++ b/layer/layer.cpp @@ -36,63 +36,11 @@ #include "wsi/wsi_factory.hpp" #include "util/log.hpp" -#define VK_LAYER_API_VERSION VK_MAKE_VERSION(1, 0, VK_HEADER_VERSION) +#define VK_LAYER_API_VERSION VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) namespace layer { -static const VkLayerProperties global_layer = { - "VK_LAYER_window_system_integration", VK_LAYER_API_VERSION, 1, "Window system integration layer", -}; -static const VkExtensionProperties device_extension[] = { { VK_KHR_SWAPCHAIN_EXTENSION_NAME, - VK_KHR_SWAPCHAIN_SPEC_VERSION } }; -static const VkExtensionProperties instance_extension[] = { { VK_KHR_SURFACE_EXTENSION_NAME, - VK_KHR_SURFACE_SPEC_VERSION } }; - -VKAPI_ATTR VkResult extension_properties(const uint32_t count, const VkExtensionProperties *layer_ext, uint32_t *pCount, - VkExtensionProperties *pProp) -{ - uint32_t size; - - if (pProp == NULL || layer_ext == NULL) - { - *pCount = count; - return VK_SUCCESS; - } - - size = *pCount < count ? *pCount : count; - memcpy(pProp, layer_ext, size * sizeof(*pProp)); - *pCount = size; - if (size < count) - { - return VK_INCOMPLETE; - } - - return VK_SUCCESS; -} - -VKAPI_ATTR VkResult layer_properties(const uint32_t count, const VkLayerProperties *layer_prop, uint32_t *pCount, - VkLayerProperties *pProp) -{ - uint32_t size; - - if (pProp == NULL || layer_prop == NULL) - { - *pCount = count; - return VK_SUCCESS; - } - - size = *pCount < count ? *pCount : count; - memcpy(pProp, layer_prop, size * sizeof(*pProp)); - *pCount = size; - if (size < count) - { - return VK_INCOMPLETE; - } - - return VK_SUCCESS; -} - VKAPI_ATTR VkLayerInstanceCreateInfo *get_chain_info(const VkInstanceCreateInfo *pCreateInfo, VkLayerFunction func) { VkLayerInstanceCreateInfo *chain_info = (VkLayerInstanceCreateInfo *)pCreateInfo->pNext; @@ -395,34 +343,6 @@ vkNegotiateLoaderLayerInterfaceVersion(VkNegotiateLayerInterface *pVersionStruct return VK_SUCCESS; } -VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL wsi_layer_vkEnumerateDeviceExtensionProperties( - VkPhysicalDevice physicalDevice, const char *pLayerName, uint32_t *pCount, VkExtensionProperties *pProperties) -{ - if (pLayerName && !strcmp(pLayerName, layer::global_layer.layerName)) - return layer::extension_properties(1, layer::device_extension, pCount, pProperties); - - assert(physicalDevice); - return layer::instance_private_data::get(physicalDevice) - .disp.EnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pCount, pProperties); -} - -VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL wsi_layer_vkEnumerateInstanceExtensionProperties( - const VkEnumerateInstanceExtensionPropertiesChain *chain, const char *pLayerName, - uint32_t *pCount, VkExtensionProperties *pProperties) -{ - if (pLayerName && !strcmp(pLayerName, layer::global_layer.layerName)) - return layer::extension_properties(1, layer::instance_extension, pCount, pProperties); - - assert(chain); - return chain->CallDown(pLayerName, pCount, pProperties); -} - -VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL -wsi_layer_vkEnumerateInstanceLayerProperties(uint32_t *pCount, VkLayerProperties *pProperties) -{ - return layer::layer_properties(1, &layer::global_layer, pCount, pProperties); -} - #define GET_PROC_ADDR(func) \ if (!strcmp(funcName, #func)) \ return (PFN_vkVoidFunction)&wsi_layer_##func; @@ -464,8 +384,6 @@ VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL wsi_layer_vkGetInstance GET_PROC_ADDR(vkGetPhysicalDeviceSurfaceFormatsKHR); GET_PROC_ADDR(vkGetPhysicalDeviceSurfacePresentModesKHR); GET_PROC_ADDR(vkDestroySurfaceKHR); - GET_PROC_ADDR(vkEnumerateDeviceExtensionProperties); - GET_PROC_ADDR(vkEnumerateInstanceLayerProperties); GET_PROC_ADDR(vkGetPhysicalDevicePresentRectanglesKHR);