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 4bdeeaa..c6e3703 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 be2f2a1..e4208f1 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);