Update json manifest
authorIason Paraskevopoulos <iason.paraskevopoulos@arm.com>
Thu, 30 Sep 2021 16:24:42 +0000 (17:24 +0100)
committerIason Paraskevopoulos <iason.paraskevopoulos@arm.com>
Thu, 7 Oct 2021 13:22:00 +0000 (13:22 +0000)
Updates the api_version to 1.2 in the json manifest. Also, adds the
entrypoints node in the device extensions as it is mandated by the
loader's documentation when an extension adds Vulkan API functions.

Removes support for intercepting vkEnumerateInstanceLayerProperties,
vkEnumerateInstanceExtensionProperties and
vkEnumerateDeviceExtensionProperties as the loader can get the
information they provide from the layer's json manifest in its
terminator functions.

Change-Id: I2c304d1d2ea17d3ea0c723694f8fc4c8a92054a0
Signed-off-by: Iason Paraskevopoulos <iason.paraskevopoulos@arm.com>
layer/VkLayer_window_system_integration.json
layer/layer.cpp

index 4bdeeaa386e7b3d9ff183c8ae46e23b710a6309e..c6e37036d48120f6cc9224eae50242d9ace5f01b 100644 (file)
@@ -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": {
index be2f2a19fd507e7de63b6f96588c4d090e53dbcc..e4208f12fb633376cb608114d8539c70e205ce44 100644 (file)
 #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);