Revert "layers: Update vulkan.py with new extensions"
authorMark Lobodzinski <mark@lunarg.com>
Thu, 17 Nov 2016 17:20:12 +0000 (10:20 -0700)
committerMark Lobodzinski <mark@lunarg.com>
Thu, 17 Nov 2016 17:20:12 +0000 (10:20 -0700)
This reverts commit f504ff6e45bb15a0517a8de2e2d75e90df7e4627.
This caused huge issues in the VulkanTools repo, reverting for
now.

vulkan.py

index a42ca3b..9000765 100644 (file)
--- a/vulkan.py
+++ b/vulkan.py
@@ -1,8 +1,9 @@
-"""Vulkan API description"""
-# See vulkan_api_generator.py for modifications
+" ""VK API description"""
 
 # Copyright (c) 2015-2016 The Khronos Group Inc.
-# Copyright (c) 2015-2016 Valve Corporation# Copyright (c) 2015-2016 LunarG, Inc.# Copyright (c) 2015-2016 Google Inc.
+# Copyright (c) 2015-2016 Valve Corporation
+# Copyright (c) 2015-2016 LunarG, Inc.
+# Copyright (c) 2015-2016 Google Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # Author: Tobin Ehlis <tobin@lunarg.com>
 # Author: Tony Barbour <tony@LunarG.com>
 # Author: Gwan-gyeong Mun <kk.moon@samsung.com>
-# Author: Mark Lobodzinski <mark@lunarg.com>
-#
 
 class Param(object):
-    """Function parameter"""
+    """A function parameter."""
 
     def __init__(self, ty, name):
         self.ty = ty
@@ -42,11 +41,33 @@ class Param(object):
         else:
             return "%s %s" % (self.ty, self.name)
 
+    def indirection_level(self):
+        """Return the level of indirection."""
+        return self.ty.count("*") + self.ty.count("[")
+
+    def dereferenced_type(self, level=0):
+        """Return the type after dereferencing."""
+        if not level:
+            level = self.indirection_level()
+
+        deref = self.ty if level else ""
+        while level > 0:
+            idx = deref.rfind("[")
+            if idx < 0:
+                idx = deref.rfind("*")
+            if idx < 0:
+                deref = ""
+                break
+            deref = deref[:idx]
+            level -= 1;
+
+        return deref.rstrip()
+
 class Proto(object):
-    """Function prototype"""
+    """A function prototype."""
 
     def __init__(self, ret, name, params=[]):
-        # Prototype has only a param
+        # the proto has only a param
         if not isinstance(params, list):
             params = [params]
 
@@ -89,11 +110,13 @@ class Proto(object):
             idx = param.ty.find("[")
             if idx < 0:
                 idx = len(param.ty)
+
             pad = 44 - idx
             if pad <= 0:
                 pad = 1
 
-            plist.append("    %s%s%s%s" % (param.ty[:idx], " " * pad, param.name, param.ty[idx:]))
+            plist.append("    %s%s%s%s" % (param.ty[:idx],
+                " " * pad, param.name, param.ty[idx:]))
 
         return "%s%s %s%s(\n%s)" % (
                 attr + "_ATTR " if attr else "",
@@ -114,13 +137,19 @@ class Proto(object):
         """Return the params that are simple VK objects and are inputs."""
         return [param for param in self.params if param.ty in objects]
 
+    def object_out_params(self):
+        """Return the params that are simple VK objects and are outputs."""
+        return [param for param in self.params
+                if param.dereferenced_type() in objects]
+
     def __repr__(self):
         param_strs = []
         for param in self.params:
             param_strs.append(str(param))
         param_str = "    [%s]" % (",\n     ".join(param_strs))
 
-        return "Proto(\"%s\", \"%s\",\n%s)" % (self.ret, self.name, param_str)
+        return "Proto(\"%s\", \"%s\",\n%s)" % \
+                (self.ret, self.name, param_str)
 
 class Extension(object):
     def __init__(self, name, headers, objects, protos, ifdef = None):
@@ -130,1537 +159,1262 @@ class Extension(object):
         self.protos = protos
         self.ifdef = ifdef
 
-
+# VK core API
 VK_VERSION_1_0 = Extension(
     name="VK_VERSION_1_0",
     headers=["vulkan/vulkan.h"],
-    ifdef="",
     objects=[
         "VkInstance",
         "VkPhysicalDevice",
         "VkDevice",
         "VkQueue",
+        "VkSemaphore",
+        "VkCommandBuffer",
         "VkFence",
         "VkDeviceMemory",
         "VkBuffer",
         "VkImage",
-        "VkSemaphore",
         "VkEvent",
         "VkQueryPool",
         "VkBufferView",
         "VkImageView",
         "VkShaderModule",
         "VkPipelineCache",
-        "VkPipeline",
         "VkPipelineLayout",
-        "VkSampler",
+        "VkRenderPass",
+        "VkPipeline",
         "VkDescriptorSetLayout",
+        "VkSampler",
         "VkDescriptorPool",
         "VkDescriptorSet",
         "VkFramebuffer",
-        "VkRenderPass",
         "VkCommandPool",
-        "VkCommandBuffer",
     ],
     protos=[
         Proto("VkResult", "CreateInstance",
-            [
-             Param("VkInstanceCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkInstance", "pInstance"),
-            ]),
+            [Param("const VkInstanceCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkInstance*", "pInstance")]),
+
         Proto("void", "DestroyInstance",
-            [
-             Param("VkInstance", "instance"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+            [Param("VkInstance", "instance"),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "EnumeratePhysicalDevices",
-            [
-             Param("VkInstance", "instance"),
-             Param("uint32_t", "pPhysicalDeviceCount"),
-             Param("VkPhysicalDevice", "pPhysicalDevices"),
-            ]),
+            [Param("VkInstance", "instance"),
+             Param("uint32_t*", "pPhysicalDeviceCount"),
+             Param("VkPhysicalDevice*", "pPhysicalDevices")]),
+
         Proto("void", "GetPhysicalDeviceFeatures",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
-             Param("VkPhysicalDeviceFeatures", "pFeatures"),
-            ]),
+            [Param("VkPhysicalDevice", "physicalDevice"),
+             Param("VkPhysicalDeviceFeatures*", "pFeatures")]),
+
         Proto("void", "GetPhysicalDeviceFormatProperties",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkFormat", "format"),
-             Param("VkFormatProperties", "pFormatProperties"),
-            ]),
+             Param("VkFormatProperties*", "pFormatProperties")]),
+
         Proto("VkResult", "GetPhysicalDeviceImageFormatProperties",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkFormat", "format"),
              Param("VkImageType", "type"),
              Param("VkImageTiling", "tiling"),
              Param("VkImageUsageFlags", "usage"),
              Param("VkImageCreateFlags", "flags"),
-             Param("VkImageFormatProperties", "pImageFormatProperties"),
-            ]),
+             Param("VkImageFormatProperties*", "pImageFormatProperties")]),
+
         Proto("void", "GetPhysicalDeviceProperties",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
-             Param("VkPhysicalDeviceProperties", "pProperties"),
-            ]),
+            [Param("VkPhysicalDevice", "physicalDevice"),
+             Param("VkPhysicalDeviceProperties*", "pProperties")]),
+
         Proto("void", "GetPhysicalDeviceQueueFamilyProperties",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
-             Param("uint32_t", "pQueueFamilyPropertyCount"),
-             Param("VkQueueFamilyProperties", "pQueueFamilyProperties"),
-            ]),
+            [Param("VkPhysicalDevice", "physicalDevice"),
+             Param("uint32_t*", "pQueueFamilyPropertyCount"),
+             Param("VkQueueFamilyProperties*", "pQueueFamilyProperties")]),
+
         Proto("void", "GetPhysicalDeviceMemoryProperties",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
-             Param("VkPhysicalDeviceMemoryProperties", "pMemoryProperties"),
-            ]),
+            [Param("VkPhysicalDevice", "physicalDevice"),
+             Param("VkPhysicalDeviceMemoryProperties*", "pMemoryProperties")]),
+
         Proto("PFN_vkVoidFunction", "GetInstanceProcAddr",
-            [
-             Param("VkInstance", "instance"),
-             Param("char", "pName"),
-            ]),
+            [Param("VkInstance", "instance"),
+             Param("const char*", "pName")]),
+
         Proto("PFN_vkVoidFunction", "GetDeviceProcAddr",
-            [
-             Param("VkDevice", "device"),
-             Param("char", "pName"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const char*", "pName")]),
+
         Proto("VkResult", "CreateDevice",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
-             Param("VkDeviceCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkDevice", "pDevice"),
-            ]),
+            [Param("VkPhysicalDevice", "physicalDevice"),
+             Param("const VkDeviceCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkDevice*", "pDevice")]),
+
         Proto("void", "DestroyDevice",
-            [
-             Param("VkDevice", "device"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "EnumerateInstanceExtensionProperties",
-            [
-             Param("char", "pLayerName"),
-             Param("uint32_t", "pPropertyCount"),
-             Param("VkExtensionProperties", "pProperties"),
-            ]),
+            [Param("const char*", "pLayerName"),
+             Param("uint32_t*", "pPropertyCount"),
+             Param("VkExtensionProperties*", "pProperties")]),
+
         Proto("VkResult", "EnumerateDeviceExtensionProperties",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
-             Param("char", "pLayerName"),
-             Param("uint32_t", "pPropertyCount"),
-             Param("VkExtensionProperties", "pProperties"),
-            ]),
+            [Param("VkPhysicalDevice", "physicalDevice"),
+             Param("const char*", "pLayerName"),
+             Param("uint32_t*", "pPropertyCount"),
+             Param("VkExtensionProperties*", "pProperties")]),
+
         Proto("VkResult", "EnumerateInstanceLayerProperties",
-            [
-             Param("uint32_t", "pPropertyCount"),
-             Param("VkLayerProperties", "pProperties"),
-            ]),
+            [Param("uint32_t*", "pPropertyCount"),
+             Param("VkLayerProperties*", "pProperties")]),
+
         Proto("VkResult", "EnumerateDeviceLayerProperties",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
-             Param("uint32_t", "pPropertyCount"),
-             Param("VkLayerProperties", "pProperties"),
-            ]),
+            [Param("VkPhysicalDevice", "physicalDevice"),
+             Param("uint32_t*", "pPropertyCount"),
+             Param("VkLayerProperties*", "pProperties")]),
+
         Proto("void", "GetDeviceQueue",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("uint32_t", "queueFamilyIndex"),
              Param("uint32_t", "queueIndex"),
-             Param("VkQueue", "pQueue"),
-            ]),
+             Param("VkQueue*", "pQueue")]),
+
         Proto("VkResult", "QueueSubmit",
-            [
-             Param("VkQueue", "queue"),
+            [Param("VkQueue", "queue"),
              Param("uint32_t", "submitCount"),
-             Param("VkSubmitInfo", "pSubmits"),
-             Param("VkFence", "fence"),
-            ]),
+             Param("const VkSubmitInfo*", "pSubmits"),
+             Param("VkFence", "fence")]),
+
         Proto("VkResult", "QueueWaitIdle",
-            [
-             Param("VkQueue", "queue"),
-            ]),
+            [Param("VkQueue", "queue")]),
+
         Proto("VkResult", "DeviceWaitIdle",
-            [
-             Param("VkDevice", "device"),
-            ]),
+            [Param("VkDevice", "device")]),
+
         Proto("VkResult", "AllocateMemory",
-            [
-             Param("VkDevice", "device"),
-             Param("VkMemoryAllocateInfo", "pAllocateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkDeviceMemory", "pMemory"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkMemoryAllocateInfo*", "pAllocateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkDeviceMemory*", "pMemory")]),
+
         Proto("void", "FreeMemory",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkDeviceMemory", "memory"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "MapMemory",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkDeviceMemory", "memory"),
              Param("VkDeviceSize", "offset"),
              Param("VkDeviceSize", "size"),
              Param("VkMemoryMapFlags", "flags"),
-             Param("void", "ppData"),
-            ]),
+             Param("void**", "ppData")]),
+
         Proto("void", "UnmapMemory",
-            [
-             Param("VkDevice", "device"),
-             Param("VkDeviceMemory", "memory"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("VkDeviceMemory", "memory")]),
+
         Proto("VkResult", "FlushMappedMemoryRanges",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("uint32_t", "memoryRangeCount"),
-             Param("VkMappedMemoryRange", "pMemoryRanges"),
-            ]),
+             Param("const VkMappedMemoryRange*", "pMemoryRanges")]),
+
         Proto("VkResult", "InvalidateMappedMemoryRanges",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("uint32_t", "memoryRangeCount"),
-             Param("VkMappedMemoryRange", "pMemoryRanges"),
-            ]),
+             Param("const VkMappedMemoryRange*", "pMemoryRanges")]),
+
         Proto("void", "GetDeviceMemoryCommitment",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkDeviceMemory", "memory"),
-             Param("VkDeviceSize", "pCommittedMemoryInBytes"),
-            ]),
+             Param("VkDeviceSize*", "pCommittedMemoryInBytes")]),
+
         Proto("VkResult", "BindBufferMemory",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkBuffer", "buffer"),
              Param("VkDeviceMemory", "memory"),
-             Param("VkDeviceSize", "memoryOffset"),
-            ]),
+             Param("VkDeviceSize", "memoryOffset")]),
+
         Proto("VkResult", "BindImageMemory",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkImage", "image"),
              Param("VkDeviceMemory", "memory"),
-             Param("VkDeviceSize", "memoryOffset"),
-            ]),
+             Param("VkDeviceSize", "memoryOffset")]),
+
         Proto("void", "GetBufferMemoryRequirements",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkBuffer", "buffer"),
-             Param("VkMemoryRequirements", "pMemoryRequirements"),
-            ]),
+             Param("VkMemoryRequirements*", "pMemoryRequirements")]),
+
         Proto("void", "GetImageMemoryRequirements",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkImage", "image"),
-             Param("VkMemoryRequirements", "pMemoryRequirements"),
-            ]),
+             Param("VkMemoryRequirements*", "pMemoryRequirements")]),
+
         Proto("void", "GetImageSparseMemoryRequirements",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkImage", "image"),
-             Param("uint32_t", "pSparseMemoryRequirementCount"),
-             Param("VkSparseImageMemoryRequirements", "pSparseMemoryRequirements"),
-            ]),
+             Param("uint32_t*", "pSparseMemoryRequirementCount"),
+             Param("VkSparseImageMemoryRequirements*", "pSparseMemoryRequirements")]),
+
         Proto("void", "GetPhysicalDeviceSparseImageFormatProperties",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkFormat", "format"),
              Param("VkImageType", "type"),
              Param("VkSampleCountFlagBits", "samples"),
              Param("VkImageUsageFlags", "usage"),
              Param("VkImageTiling", "tiling"),
-             Param("uint32_t", "pPropertyCount"),
-             Param("VkSparseImageFormatProperties", "pProperties"),
-            ]),
+             Param("uint32_t*", "pPropertyCount"),
+             Param("VkSparseImageFormatProperties*", "pProperties")]),
+
         Proto("VkResult", "QueueBindSparse",
-            [
-             Param("VkQueue", "queue"),
+            [Param("VkQueue", "queue"),
              Param("uint32_t", "bindInfoCount"),
-             Param("VkBindSparseInfo", "pBindInfo"),
-             Param("VkFence", "fence"),
-            ]),
+             Param("const VkBindSparseInfo*", "pBindInfo"),
+             Param("VkFence", "fence")]),
+
         Proto("VkResult", "CreateFence",
-            [
-             Param("VkDevice", "device"),
-             Param("VkFenceCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkFence", "pFence"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkFenceCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkFence*", "pFence")]),
+
         Proto("void", "DestroyFence",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkFence", "fence"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "ResetFences",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("uint32_t", "fenceCount"),
-             Param("VkFence", "pFences"),
-            ]),
+             Param("const VkFence*", "pFences")]),
+
         Proto("VkResult", "GetFenceStatus",
-            [
-             Param("VkDevice", "device"),
-             Param("VkFence", "fence"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("VkFence", "fence")]),
+
         Proto("VkResult", "WaitForFences",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("uint32_t", "fenceCount"),
-             Param("VkFence", "pFences"),
+             Param("const VkFence*", "pFences"),
              Param("VkBool32", "waitAll"),
-             Param("uint64_t", "timeout"),
-            ]),
+             Param("uint64_t", "timeout")]),
+
         Proto("VkResult", "CreateSemaphore",
-            [
-             Param("VkDevice", "device"),
-             Param("VkSemaphoreCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkSemaphore", "pSemaphore"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkSemaphoreCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkSemaphore*", "pSemaphore")]),
+
         Proto("void", "DestroySemaphore",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkSemaphore", "semaphore"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "CreateEvent",
-            [
-             Param("VkDevice", "device"),
-             Param("VkEventCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkEvent", "pEvent"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkEventCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkEvent*", "pEvent")]),
+
         Proto("void", "DestroyEvent",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkEvent", "event"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "GetEventStatus",
-            [
-             Param("VkDevice", "device"),
-             Param("VkEvent", "event"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("VkEvent", "event")]),
+
         Proto("VkResult", "SetEvent",
-            [
-             Param("VkDevice", "device"),
-             Param("VkEvent", "event"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("VkEvent", "event")]),
+
         Proto("VkResult", "ResetEvent",
-            [
-             Param("VkDevice", "device"),
-             Param("VkEvent", "event"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("VkEvent", "event")]),
+
         Proto("VkResult", "CreateQueryPool",
-            [
-             Param("VkDevice", "device"),
-             Param("VkQueryPoolCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkQueryPool", "pQueryPool"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkQueryPoolCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkQueryPool*", "pQueryPool")]),
+
         Proto("void", "DestroyQueryPool",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkQueryPool", "queryPool"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "GetQueryPoolResults",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkQueryPool", "queryPool"),
              Param("uint32_t", "firstQuery"),
              Param("uint32_t", "queryCount"),
              Param("size_t", "dataSize"),
-             Param("void", "pData"),
+             Param("void*", "pData"),
              Param("VkDeviceSize", "stride"),
-             Param("VkQueryResultFlags", "flags"),
-            ]),
+             Param("VkQueryResultFlags", "flags")]),
+
         Proto("VkResult", "CreateBuffer",
-            [
-             Param("VkDevice", "device"),
-             Param("VkBufferCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkBuffer", "pBuffer"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkBufferCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkBuffer*", "pBuffer")]),
+
         Proto("void", "DestroyBuffer",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkBuffer", "buffer"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "CreateBufferView",
-            [
-             Param("VkDevice", "device"),
-             Param("VkBufferViewCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkBufferView", "pView"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkBufferViewCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkBufferView*", "pView")]),
+
         Proto("void", "DestroyBufferView",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkBufferView", "bufferView"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "CreateImage",
-            [
-             Param("VkDevice", "device"),
-             Param("VkImageCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkImage", "pImage"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkImageCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkImage*", "pImage")]),
+
         Proto("void", "DestroyImage",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkImage", "image"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("void", "GetImageSubresourceLayout",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkImage", "image"),
-             Param("VkImageSubresource", "pSubresource"),
-             Param("VkSubresourceLayout", "pLayout"),
-            ]),
+             Param("const VkImageSubresource*", "pSubresource"),
+             Param("VkSubresourceLayout*", "pLayout")]),
+
         Proto("VkResult", "CreateImageView",
-            [
-             Param("VkDevice", "device"),
-             Param("VkImageViewCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkImageView", "pView"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkImageViewCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkImageView*", "pView")]),
+
         Proto("void", "DestroyImageView",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkImageView", "imageView"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "CreateShaderModule",
-            [
-             Param("VkDevice", "device"),
-             Param("VkShaderModuleCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkShaderModule", "pShaderModule"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkShaderModuleCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkShaderModule*", "pShaderModule")]),
+
         Proto("void", "DestroyShaderModule",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkShaderModule", "shaderModule"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "CreatePipelineCache",
-            [
-             Param("VkDevice", "device"),
-             Param("VkPipelineCacheCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkPipelineCache", "pPipelineCache"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkPipelineCacheCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkPipelineCache*", "pPipelineCache")]),
+
         Proto("void", "DestroyPipelineCache",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkPipelineCache", "pipelineCache"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "GetPipelineCacheData",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkPipelineCache", "pipelineCache"),
-             Param("size_t", "pDataSize"),
-             Param("void", "pData"),
-            ]),
+             Param("size_t*", "pDataSize"),
+             Param("void*", "pData")]),
+
         Proto("VkResult", "MergePipelineCaches",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkPipelineCache", "dstCache"),
              Param("uint32_t", "srcCacheCount"),
-             Param("VkPipelineCache", "pSrcCaches"),
-            ]),
+             Param("const VkPipelineCache*", "pSrcCaches")]),
+
         Proto("VkResult", "CreateGraphicsPipelines",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkPipelineCache", "pipelineCache"),
              Param("uint32_t", "createInfoCount"),
-             Param("VkGraphicsPipelineCreateInfo", "pCreateInfos"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkPipeline", "pPipelines"),
-            ]),
+             Param("const VkGraphicsPipelineCreateInfo*", "pCreateInfos"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkPipeline*", "pPipelines")]),
+
         Proto("VkResult", "CreateComputePipelines",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkPipelineCache", "pipelineCache"),
              Param("uint32_t", "createInfoCount"),
-             Param("VkComputePipelineCreateInfo", "pCreateInfos"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkPipeline", "pPipelines"),
-            ]),
+             Param("const VkComputePipelineCreateInfo*", "pCreateInfos"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkPipeline*", "pPipelines")]),
+
         Proto("void", "DestroyPipeline",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkPipeline", "pipeline"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "CreatePipelineLayout",
-            [
-             Param("VkDevice", "device"),
-             Param("VkPipelineLayoutCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkPipelineLayout", "pPipelineLayout"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkPipelineLayoutCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkPipelineLayout*", "pPipelineLayout")]),
+
         Proto("void", "DestroyPipelineLayout",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkPipelineLayout", "pipelineLayout"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "CreateSampler",
-            [
-             Param("VkDevice", "device"),
-             Param("VkSamplerCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkSampler", "pSampler"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkSamplerCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkSampler*", "pSampler")]),
+
         Proto("void", "DestroySampler",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkSampler", "sampler"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "CreateDescriptorSetLayout",
-            [
-             Param("VkDevice", "device"),
-             Param("VkDescriptorSetLayoutCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkDescriptorSetLayout", "pSetLayout"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkDescriptorSetLayoutCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkDescriptorSetLayout*", "pSetLayout")]),
+
         Proto("void", "DestroyDescriptorSetLayout",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkDescriptorSetLayout", "descriptorSetLayout"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "CreateDescriptorPool",
-            [
-             Param("VkDevice", "device"),
-             Param("VkDescriptorPoolCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkDescriptorPool", "pDescriptorPool"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkDescriptorPoolCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkDescriptorPool*", "pDescriptorPool")]),
+
         Proto("void", "DestroyDescriptorPool",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkDescriptorPool", "descriptorPool"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "ResetDescriptorPool",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkDescriptorPool", "descriptorPool"),
-             Param("VkDescriptorPoolResetFlags", "flags"),
-            ]),
+             Param("VkDescriptorPoolResetFlags", "flags")]),
+
         Proto("VkResult", "AllocateDescriptorSets",
-            [
-             Param("VkDevice", "device"),
-             Param("VkDescriptorSetAllocateInfo", "pAllocateInfo"),
-             Param("VkDescriptorSet", "pDescriptorSets"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkDescriptorSetAllocateInfo*", "pAllocateInfo"),
+             Param("VkDescriptorSet*", "pDescriptorSets")]),
+
         Proto("VkResult", "FreeDescriptorSets",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkDescriptorPool", "descriptorPool"),
              Param("uint32_t", "descriptorSetCount"),
-             Param("VkDescriptorSet", "pDescriptorSets"),
-            ]),
+             Param("const VkDescriptorSet*", "pDescriptorSets")]),
+
         Proto("void", "UpdateDescriptorSets",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("uint32_t", "descriptorWriteCount"),
-             Param("VkWriteDescriptorSet", "pDescriptorWrites"),
+             Param("const VkWriteDescriptorSet*", "pDescriptorWrites"),
              Param("uint32_t", "descriptorCopyCount"),
-             Param("VkCopyDescriptorSet", "pDescriptorCopies"),
-            ]),
+             Param("const VkCopyDescriptorSet*", "pDescriptorCopies")]),
+
         Proto("VkResult", "CreateFramebuffer",
-            [
-             Param("VkDevice", "device"),
-             Param("VkFramebufferCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkFramebuffer", "pFramebuffer"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkFramebufferCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkFramebuffer*", "pFramebuffer")]),
+
         Proto("void", "DestroyFramebuffer",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkFramebuffer", "framebuffer"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "CreateRenderPass",
-            [
-             Param("VkDevice", "device"),
-             Param("VkRenderPassCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkRenderPass", "pRenderPass"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkRenderPassCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkRenderPass*", "pRenderPass")]),
+
         Proto("void", "DestroyRenderPass",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkRenderPass", "renderPass"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("void", "GetRenderAreaGranularity",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkRenderPass", "renderPass"),
-             Param("VkExtent2D", "pGranularity"),
-            ]),
+             Param("VkExtent2D*", "pGranularity")]),
+
         Proto("VkResult", "CreateCommandPool",
-            [
-             Param("VkDevice", "device"),
-             Param("VkCommandPoolCreateInfo", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkCommandPool", "pCommandPool"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkCommandPoolCreateInfo*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkCommandPool*", "pCommandPool")]),
+
         Proto("void", "DestroyCommandPool",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkCommandPool", "commandPool"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "ResetCommandPool",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkCommandPool", "commandPool"),
-             Param("VkCommandPoolResetFlags", "flags"),
-            ]),
+             Param("VkCommandPoolResetFlags", "flags")]),
+
         Proto("VkResult", "AllocateCommandBuffers",
-            [
-             Param("VkDevice", "device"),
-             Param("VkCommandBufferAllocateInfo", "pAllocateInfo"),
-             Param("VkCommandBuffer", "pCommandBuffers"),
-            ]),
+            [Param("VkDevice", "device"),
+             Param("const VkCommandBufferAllocateInfo*", "pAllocateInfo"),
+             Param("VkCommandBuffer*", "pCommandBuffers")]),
+
         Proto("void", "FreeCommandBuffers",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("VkCommandPool", "commandPool"),
              Param("uint32_t", "commandBufferCount"),
-             Param("VkCommandBuffer", "pCommandBuffers"),
-            ]),
+             Param("const VkCommandBuffer*", "pCommandBuffers")]),
+
         Proto("VkResult", "BeginCommandBuffer",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-             Param("VkCommandBufferBeginInfo", "pBeginInfo"),
-            ]),
+            [Param("VkCommandBuffer", "commandBuffer"),
+             Param("const VkCommandBufferBeginInfo*", "pBeginInfo")]),
+
         Proto("VkResult", "EndCommandBuffer",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-            ]),
+            [Param("VkCommandBuffer", "commandBuffer")]),
+
         Proto("VkResult", "ResetCommandBuffer",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-             Param("VkCommandBufferResetFlags", "flags"),
-            ]),
+            [Param("VkCommandBuffer", "commandBuffer"),
+             Param("VkCommandBufferResetFlags", "flags")]),
+
         Proto("void", "CmdBindPipeline",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkPipelineBindPoint", "pipelineBindPoint"),
-             Param("VkPipeline", "pipeline"),
-            ]),
+             Param("VkPipeline", "pipeline")]),
+
         Proto("void", "CmdSetViewport",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("uint32_t", "firstViewport"),
              Param("uint32_t", "viewportCount"),
-             Param("VkViewport", "pViewports"),
-            ]),
+             Param("const VkViewport*", "pViewports")]),
+
         Proto("void", "CmdSetScissor",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("uint32_t", "firstScissor"),
              Param("uint32_t", "scissorCount"),
-             Param("VkRect2D", "pScissors"),
-            ]),
+             Param("const VkRect2D*", "pScissors")]),
+
         Proto("void", "CmdSetLineWidth",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-             Param("float", "lineWidth"),
-            ]),
+            [Param("VkCommandBuffer", "commandBuffer"),
+             Param("float", "lineWidth")]),
+
         Proto("void", "CmdSetDepthBias",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("float", "depthBiasConstantFactor"),
              Param("float", "depthBiasClamp"),
-             Param("float", "depthBiasSlopeFactor"),
-            ]),
+             Param("float", "depthBiasSlopeFactor")]),
+
         Proto("void", "CmdSetBlendConstants",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-             Param("float", "blendConstants"),
-            ]),
+            [Param("VkCommandBuffer", "commandBuffer"),
+             Param("const float[4]", "blendConstants")]),
+
         Proto("void", "CmdSetDepthBounds",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("float", "minDepthBounds"),
-             Param("float", "maxDepthBounds"),
-            ]),
+             Param("float", "maxDepthBounds")]),
+
         Proto("void", "CmdSetStencilCompareMask",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkStencilFaceFlags", "faceMask"),
-             Param("uint32_t", "compareMask"),
-            ]),
+             Param("uint32_t", "compareMask")]),
+
         Proto("void", "CmdSetStencilWriteMask",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkStencilFaceFlags", "faceMask"),
-             Param("uint32_t", "writeMask"),
-            ]),
+             Param("uint32_t", "writeMask")]),
+
         Proto("void", "CmdSetStencilReference",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkStencilFaceFlags", "faceMask"),
-             Param("uint32_t", "reference"),
-            ]),
+             Param("uint32_t", "reference")]),
+
         Proto("void", "CmdBindDescriptorSets",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkPipelineBindPoint", "pipelineBindPoint"),
              Param("VkPipelineLayout", "layout"),
              Param("uint32_t", "firstSet"),
              Param("uint32_t", "descriptorSetCount"),
-             Param("VkDescriptorSet", "pDescriptorSets"),
+             Param("const VkDescriptorSet*", "pDescriptorSets"),
              Param("uint32_t", "dynamicOffsetCount"),
-             Param("uint32_t", "pDynamicOffsets"),
-            ]),
+             Param("const uint32_t*", "pDynamicOffsets")]),
+
         Proto("void", "CmdBindIndexBuffer",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkBuffer", "buffer"),
              Param("VkDeviceSize", "offset"),
-             Param("VkIndexType", "indexType"),
-            ]),
+             Param("VkIndexType", "indexType")]),
+
         Proto("void", "CmdBindVertexBuffers",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("uint32_t", "firstBinding"),
              Param("uint32_t", "bindingCount"),
-             Param("VkBuffer", "pBuffers"),
-             Param("VkDeviceSize", "pOffsets"),
-            ]),
+             Param("const VkBuffer*", "pBuffers"),
+             Param("const VkDeviceSize*", "pOffsets")]),
+
         Proto("void", "CmdDraw",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("uint32_t", "vertexCount"),
              Param("uint32_t", "instanceCount"),
              Param("uint32_t", "firstVertex"),
-             Param("uint32_t", "firstInstance"),
-            ]),
+             Param("uint32_t", "firstInstance")]),
+
         Proto("void", "CmdDrawIndexed",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("uint32_t", "indexCount"),
              Param("uint32_t", "instanceCount"),
              Param("uint32_t", "firstIndex"),
              Param("int32_t", "vertexOffset"),
-             Param("uint32_t", "firstInstance"),
-            ]),
+             Param("uint32_t", "firstInstance")]),
+
         Proto("void", "CmdDrawIndirect",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkBuffer", "buffer"),
              Param("VkDeviceSize", "offset"),
              Param("uint32_t", "drawCount"),
-             Param("uint32_t", "stride"),
-            ]),
+             Param("uint32_t", "stride")]),
+
         Proto("void", "CmdDrawIndexedIndirect",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkBuffer", "buffer"),
              Param("VkDeviceSize", "offset"),
              Param("uint32_t", "drawCount"),
-             Param("uint32_t", "stride"),
-            ]),
+             Param("uint32_t", "stride")]),
+
         Proto("void", "CmdDispatch",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("uint32_t", "x"),
              Param("uint32_t", "y"),
-             Param("uint32_t", "z"),
-            ]),
+             Param("uint32_t", "z")]),
+
         Proto("void", "CmdDispatchIndirect",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkBuffer", "buffer"),
-             Param("VkDeviceSize", "offset"),
-            ]),
+             Param("VkDeviceSize", "offset")]),
+
         Proto("void", "CmdCopyBuffer",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkBuffer", "srcBuffer"),
              Param("VkBuffer", "dstBuffer"),
              Param("uint32_t", "regionCount"),
-             Param("VkBufferCopy", "pRegions"),
-            ]),
+             Param("const VkBufferCopy*", "pRegions")]),
+
         Proto("void", "CmdCopyImage",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkImage", "srcImage"),
              Param("VkImageLayout", "srcImageLayout"),
              Param("VkImage", "dstImage"),
              Param("VkImageLayout", "dstImageLayout"),
              Param("uint32_t", "regionCount"),
-             Param("VkImageCopy", "pRegions"),
-            ]),
+             Param("const VkImageCopy*", "pRegions")]),
+
         Proto("void", "CmdBlitImage",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkImage", "srcImage"),
              Param("VkImageLayout", "srcImageLayout"),
              Param("VkImage", "dstImage"),
              Param("VkImageLayout", "dstImageLayout"),
              Param("uint32_t", "regionCount"),
-             Param("VkImageBlit", "pRegions"),
-             Param("VkFilter", "filter"),
-            ]),
+             Param("const VkImageBlit*", "pRegions"),
+             Param("VkFilter", "filter")]),
+
         Proto("void", "CmdCopyBufferToImage",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkBuffer", "srcBuffer"),
              Param("VkImage", "dstImage"),
              Param("VkImageLayout", "dstImageLayout"),
              Param("uint32_t", "regionCount"),
-             Param("VkBufferImageCopy", "pRegions"),
-            ]),
+             Param("const VkBufferImageCopy*", "pRegions")]),
+
         Proto("void", "CmdCopyImageToBuffer",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkImage", "srcImage"),
              Param("VkImageLayout", "srcImageLayout"),
              Param("VkBuffer", "dstBuffer"),
              Param("uint32_t", "regionCount"),
-             Param("VkBufferImageCopy", "pRegions"),
-            ]),
+             Param("const VkBufferImageCopy*", "pRegions")]),
+
         Proto("void", "CmdUpdateBuffer",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkBuffer", "dstBuffer"),
              Param("VkDeviceSize", "dstOffset"),
              Param("VkDeviceSize", "dataSize"),
-             Param("void", "pData"),
-            ]),
+             Param("const void*", "pData")]),
+
         Proto("void", "CmdFillBuffer",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkBuffer", "dstBuffer"),
              Param("VkDeviceSize", "dstOffset"),
              Param("VkDeviceSize", "size"),
-             Param("uint32_t", "data"),
-            ]),
+             Param("uint32_t", "data")]),
+
         Proto("void", "CmdClearColorImage",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkImage", "image"),
              Param("VkImageLayout", "imageLayout"),
-             Param("VkClearColorValue", "pColor"),
+             Param("const VkClearColorValue*", "pColor"),
              Param("uint32_t", "rangeCount"),
-             Param("VkImageSubresourceRange", "pRanges"),
-            ]),
+             Param("const VkImageSubresourceRange*", "pRanges")]),
+
         Proto("void", "CmdClearDepthStencilImage",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkImage", "image"),
              Param("VkImageLayout", "imageLayout"),
-             Param("VkClearDepthStencilValue", "pDepthStencil"),
+             Param("const VkClearDepthStencilValue*", "pDepthStencil"),
              Param("uint32_t", "rangeCount"),
-             Param("VkImageSubresourceRange", "pRanges"),
-            ]),
+             Param("const VkImageSubresourceRange*", "pRanges")]),
+
         Proto("void", "CmdClearAttachments",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("uint32_t", "attachmentCount"),
-             Param("VkClearAttachment", "pAttachments"),
+             Param("const VkClearAttachment*", "pAttachments"),
              Param("uint32_t", "rectCount"),
-             Param("VkClearRect", "pRects"),
-            ]),
+             Param("const VkClearRect*", "pRects")]),
+
         Proto("void", "CmdResolveImage",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkImage", "srcImage"),
              Param("VkImageLayout", "srcImageLayout"),
              Param("VkImage", "dstImage"),
              Param("VkImageLayout", "dstImageLayout"),
              Param("uint32_t", "regionCount"),
-             Param("VkImageResolve", "pRegions"),
-            ]),
+             Param("const VkImageResolve*", "pRegions")]),
+
         Proto("void", "CmdSetEvent",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkEvent", "event"),
-             Param("VkPipelineStageFlags", "stageMask"),
-            ]),
+             Param("VkPipelineStageFlags", "stageMask")]),
+
         Proto("void", "CmdResetEvent",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkEvent", "event"),
-             Param("VkPipelineStageFlags", "stageMask"),
-            ]),
+             Param("VkPipelineStageFlags", "stageMask")]),
+
         Proto("void", "CmdWaitEvents",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("uint32_t", "eventCount"),
-             Param("VkEvent", "pEvents"),
+             Param("const VkEvent*", "pEvents"),
              Param("VkPipelineStageFlags", "srcStageMask"),
              Param("VkPipelineStageFlags", "dstStageMask"),
              Param("uint32_t", "memoryBarrierCount"),
-             Param("VkMemoryBarrier", "pMemoryBarriers"),
+             Param("const VkMemoryBarrier*", "pMemoryBarriers"),
              Param("uint32_t", "bufferMemoryBarrierCount"),
-             Param("VkBufferMemoryBarrier", "pBufferMemoryBarriers"),
+             Param("const VkBufferMemoryBarrier*", "pBufferMemoryBarriers"),
              Param("uint32_t", "imageMemoryBarrierCount"),
-             Param("VkImageMemoryBarrier", "pImageMemoryBarriers"),
-            ]),
+             Param("const VkImageMemoryBarrier*", "pImageMemoryBarriers")]),
+
         Proto("void", "CmdPipelineBarrier",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkPipelineStageFlags", "srcStageMask"),
              Param("VkPipelineStageFlags", "dstStageMask"),
              Param("VkDependencyFlags", "dependencyFlags"),
              Param("uint32_t", "memoryBarrierCount"),
-             Param("VkMemoryBarrier", "pMemoryBarriers"),
+             Param("const VkMemoryBarrier*", "pMemoryBarriers"),
              Param("uint32_t", "bufferMemoryBarrierCount"),
-             Param("VkBufferMemoryBarrier", "pBufferMemoryBarriers"),
+             Param("const VkBufferMemoryBarrier*", "pBufferMemoryBarriers"),
              Param("uint32_t", "imageMemoryBarrierCount"),
-             Param("VkImageMemoryBarrier", "pImageMemoryBarriers"),
-            ]),
+             Param("const VkImageMemoryBarrier*", "pImageMemoryBarriers")]),
+
         Proto("void", "CmdBeginQuery",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkQueryPool", "queryPool"),
              Param("uint32_t", "query"),
-             Param("VkQueryControlFlags", "flags"),
-            ]),
+             Param("VkQueryControlFlags", "flags")]),
+
         Proto("void", "CmdEndQuery",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkQueryPool", "queryPool"),
-             Param("uint32_t", "query"),
-            ]),
+             Param("uint32_t", "query")]),
+
         Proto("void", "CmdResetQueryPool",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkQueryPool", "queryPool"),
              Param("uint32_t", "firstQuery"),
-             Param("uint32_t", "queryCount"),
-            ]),
+             Param("uint32_t", "queryCount")]),
+
         Proto("void", "CmdWriteTimestamp",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkPipelineStageFlagBits", "pipelineStage"),
              Param("VkQueryPool", "queryPool"),
-             Param("uint32_t", "query"),
-            ]),
+             Param("uint32_t", "query")]),
+
         Proto("void", "CmdCopyQueryPoolResults",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkQueryPool", "queryPool"),
              Param("uint32_t", "firstQuery"),
              Param("uint32_t", "queryCount"),
              Param("VkBuffer", "dstBuffer"),
              Param("VkDeviceSize", "dstOffset"),
              Param("VkDeviceSize", "stride"),
-             Param("VkQueryResultFlags", "flags"),
-            ]),
+             Param("VkQueryResultFlags", "flags")]),
+
         Proto("void", "CmdPushConstants",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("VkPipelineLayout", "layout"),
              Param("VkShaderStageFlags", "stageFlags"),
              Param("uint32_t", "offset"),
              Param("uint32_t", "size"),
-             Param("void", "pValues"),
-            ]),
+             Param("const void*", "pValues")]),
+
         Proto("void", "CmdBeginRenderPass",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-             Param("VkRenderPassBeginInfo", "pRenderPassBegin"),
-             Param("VkSubpassContents", "contents"),
-            ]),
+            [Param("VkCommandBuffer", "commandBuffer"),
+             Param("const VkRenderPassBeginInfo*", "pRenderPassBegin"),
+             Param("VkSubpassContents", "contents")]),
+
         Proto("void", "CmdNextSubpass",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-             Param("VkSubpassContents", "contents"),
-            ]),
+            [Param("VkCommandBuffer", "commandBuffer"),
+             Param("VkSubpassContents", "contents")]),
+
         Proto("void", "CmdEndRenderPass",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-            ]),
+            [Param("VkCommandBuffer", "commandBuffer")]),
+
         Proto("void", "CmdExecuteCommands",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
+            [Param("VkCommandBuffer", "commandBuffer"),
              Param("uint32_t", "commandBufferCount"),
-             Param("VkCommandBuffer", "pCommandBuffers"),
-            ]),
+             Param("const VkCommandBuffer*", "pCommandBuffers")]),
     ],
+)
 
+VK_AMD_draw_indirect_count = Extension(
+    name="VK_AMD_draw_indirect_count",
+    headers=["vulkan/vulkan.h"],
+    objects=[],
+    protos=[
+        Proto("void", "CmdDrawIndirectCountAMD",
+            [Param("VkCommandBuffer", "commandBuffer"),
+             Param("VkBuffer", "buffer"),
+             Param("VkDeviceSize", "offset"),
+             Param("VkBuffer", "countBuffer"),
+             Param("VkDeviceSize", "countBufferOffset"),
+             Param("uint32_t", "maxDrawCount"),
+             Param("uint32_t", "stride")]),
+
+        Proto("void", "CmdDrawIndexedIndirectCountAMD",
+            [Param("VkCommandBuffer", "commandBuffer"),
+             Param("VkBuffer", "buffer"),
+             Param("VkDeviceSize", "offset"),
+             Param("VkBuffer", "countBuffer"),
+             Param("VkDeviceSize", "countBufferOffset"),
+             Param("uint32_t", "maxDrawCount"),
+             Param("uint32_t", "stride")]),
+    ],
+)
+
+VK_NV_external_memory_capabilities = Extension(
+    name="VK_NV_external_memory_capabilities",
+    headers=["vulkan/vulkan.h"],
+    objects=[],
+    protos=[
+        Proto("VkResult", "GetPhysicalDeviceExternalImageFormatPropertiesNV",
+            [Param("VkPhysicalDevice", "physicalDevice"),
+             Param("VkFormat", "format"),
+             Param("VkImageType", "type"),
+             Param("VkImageTiling", "tiling"),
+             Param("VkImageUsageFlags", "usage"),
+             Param("VkImageCreateFlags", "flags"),
+             Param("VkExternalMemoryHandleTypeFlagsNV", "externalHandleType"),
+             Param("VkExternalImageFormatPropertiesNV*", "pExternalImageFormatProperties")]),
+    ],
+)
+
+VK_NV_external_memory_win32 = Extension(
+    name="VK_NV_external_memory_win32",
+    headers=["vulkan/vulkan.h"],
+    objects=[],
+    ifdef="VK_USE_PLATFORM_WIN32_KHR",
+    protos=[
+        Proto("VkResult", "GetMemoryWin32HandleNV",
+            [Param("VkDevice", "device"),
+             Param("VkDeviceMemory", "memory"),
+             Param("VkExternalMemoryHandleTypeFlagsNV", "handleType"),
+             Param("HANDLE*", "pHandle")]),
+    ],
 )
 
 VK_KHR_surface = Extension(
     name="VK_KHR_surface",
     headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[
-        "VkSurfaceKHR",
-    ],
+    objects=["vkSurfaceKHR"],
     protos=[
         Proto("void", "DestroySurfaceKHR",
-            [
-             Param("VkInstance", "instance"),
+            [Param("VkInstance", "instance"),
              Param("VkSurfaceKHR", "surface"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("VkResult", "GetPhysicalDeviceSurfaceSupportKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("uint32_t", "queueFamilyIndex"),
              Param("VkSurfaceKHR", "surface"),
-             Param("VkBool32", "pSupported"),
-            ]),
+             Param("VkBool32*", "pSupported")]),
+
         Proto("VkResult", "GetPhysicalDeviceSurfaceCapabilitiesKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkSurfaceKHR", "surface"),
-             Param("VkSurfaceCapabilitiesKHR", "pSurfaceCapabilities"),
-            ]),
+             Param("VkSurfaceCapabilitiesKHR*", "pSurfaceCapabilities")]),
+
         Proto("VkResult", "GetPhysicalDeviceSurfaceFormatsKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkSurfaceKHR", "surface"),
-             Param("uint32_t", "pSurfaceFormatCount"),
-             Param("VkSurfaceFormatKHR", "pSurfaceFormats"),
-            ]),
+             Param("uint32_t*", "pSurfaceFormatCount"),
+             Param("VkSurfaceFormatKHR*", "pSurfaceFormats")]),
+
         Proto("VkResult", "GetPhysicalDeviceSurfacePresentModesKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkSurfaceKHR", "surface"),
-             Param("uint32_t", "pPresentModeCount"),
-             Param("VkPresentModeKHR", "pPresentModes"),
-            ]),
+             Param("uint32_t*", "pPresentModeCount"),
+             Param("VkPresentModeKHR*", "pPresentModes")]),
     ],
-
-)
-
-VK_KHR_swapchain = Extension(
-    name="VK_KHR_swapchain",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[
-        "VkSwapchainKHR",
-    ],
-    protos=[
-        Proto("VkResult", "CreateSwapchainKHR",
-            [
-             Param("VkDevice", "device"),
-             Param("VkSwapchainCreateInfoKHR", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkSwapchainKHR", "pSwapchain"),
-            ]),
-        Proto("void", "DestroySwapchainKHR",
-            [
-             Param("VkDevice", "device"),
-             Param("VkSwapchainKHR", "swapchain"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
-        Proto("VkResult", "GetSwapchainImagesKHR",
-            [
-             Param("VkDevice", "device"),
-             Param("VkSwapchainKHR", "swapchain"),
-             Param("uint32_t", "pSwapchainImageCount"),
-             Param("VkImage", "pSwapchainImages"),
-            ]),
-        Proto("VkResult", "AcquireNextImageKHR",
-            [
-             Param("VkDevice", "device"),
-             Param("VkSwapchainKHR", "swapchain"),
-             Param("uint64_t", "timeout"),
-             Param("VkSemaphore", "semaphore"),
-             Param("VkFence", "fence"),
-             Param("uint32_t", "pImageIndex"),
-            ]),
-        Proto("VkResult", "QueuePresentKHR",
-            [
-             Param("VkQueue", "queue"),
-             Param("VkPresentInfoKHR", "pPresentInfo"),
-            ]),
-    ],
-
 )
 
 VK_KHR_display = Extension(
     name="VK_KHR_display",
     headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[
-        "VkDisplayKHR",
-        "VkDisplayModeKHR",
-    ],
+    objects=['VkSurfaceKHR', 'VkDisplayModeKHR'],
     protos=[
         Proto("VkResult", "GetPhysicalDeviceDisplayPropertiesKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
-             Param("uint32_t", "pPropertyCount"),
-             Param("VkDisplayPropertiesKHR", "pProperties"),
-            ]),
+            [Param("VkPhysicalDevice", "physicalDevice"),
+             Param("uint32_t*", "pPropertyCount"),
+             Param("VkDisplayPropertiesKHR*", "pProperties")]),
+
         Proto("VkResult", "GetPhysicalDeviceDisplayPlanePropertiesKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
-             Param("uint32_t", "pPropertyCount"),
-             Param("VkDisplayPlanePropertiesKHR", "pProperties"),
-            ]),
+            [Param("VkPhysicalDevice", "physicalDevice"),
+             Param("uint32_t*", "pPropertyCount"),
+             Param("VkDisplayPlanePropertiesKHR*", "pProperties")]),
+
         Proto("VkResult", "GetDisplayPlaneSupportedDisplaysKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("uint32_t", "planeIndex"),
-             Param("uint32_t", "pDisplayCount"),
-             Param("VkDisplayKHR", "pDisplays"),
-            ]),
+             Param("uint32_t*", "pDisplayCount"),
+             Param("VkDisplayKHR*", "pDisplays")]),
+
         Proto("VkResult", "GetDisplayModePropertiesKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkDisplayKHR", "display"),
-             Param("uint32_t", "pPropertyCount"),
-             Param("VkDisplayModePropertiesKHR", "pProperties"),
-            ]),
+             Param("uint32_t*", "pPropertyCount"),
+             Param("VkDisplayModePropertiesKHR*", "pProperties")]),
+
         Proto("VkResult", "CreateDisplayModeKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkDisplayKHR", "display"),
-             Param("VkDisplayModeCreateInfoKHR", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkDisplayModeKHR", "pMode"),
-            ]),
+             Param("const VkDisplayModeCreateInfoKHR*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkDisplayModeKHR*", "pMode")]),
+
         Proto("VkResult", "GetDisplayPlaneCapabilitiesKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("VkDisplayModeKHR", "mode"),
              Param("uint32_t", "planeIndex"),
-             Param("VkDisplayPlaneCapabilitiesKHR", "pCapabilities"),
-            ]),
+             Param("VkDisplayPlaneCapabilitiesKHR*", "pCapabilities")]),
+
         Proto("VkResult", "CreateDisplayPlaneSurfaceKHR",
-            [
-             Param("VkInstance", "instance"),
-             Param("VkDisplaySurfaceCreateInfoKHR", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkSurfaceKHR", "pSurface"),
-            ]),
+            [Param("VkInstance", "instance"),
+             Param("const VkDisplaySurfaceCreateInfoKHR*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkSurfaceKHR*", "pSurface")]),
     ],
+)
+
+VK_KHR_swapchain = Extension(
+    name="VK_KHR_swapchain",
+    headers=["vulkan/vulkan.h"],
+    objects=["VkSwapchainKHR"],
+    protos=[
+        Proto("VkResult", "CreateSwapchainKHR",
+            [Param("VkDevice", "device"),
+             Param("const VkSwapchainCreateInfoKHR*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkSwapchainKHR*", "pSwapchain")]),
 
+        Proto("void", "DestroySwapchainKHR",
+            [Param("VkDevice", "device"),
+             Param("VkSwapchainKHR", "swapchain"),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+        Proto("VkResult", "GetSwapchainImagesKHR",
+            [Param("VkDevice", "device"),
+         Param("VkSwapchainKHR", "swapchain"),
+         Param("uint32_t*", "pSwapchainImageCount"),
+             Param("VkImage*", "pSwapchainImages")]),
+
+        Proto("VkResult", "AcquireNextImageKHR",
+            [Param("VkDevice", "device"),
+             Param("VkSwapchainKHR", "swapchain"),
+             Param("uint64_t", "timeout"),
+             Param("VkSemaphore", "semaphore"),
+             Param("VkFence", "fence"),
+             Param("uint32_t*", "pImageIndex")]),
+
+        Proto("VkResult", "QueuePresentKHR",
+            [Param("VkQueue", "queue"),
+             Param("const VkPresentInfoKHR*", "pPresentInfo")]),
+    ],
 )
 
 VK_KHR_display_swapchain = Extension(
     name="VK_KHR_display_swapchain",
     headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
+    objects=["VkDisplayPresentInfoKHR"],
     protos=[
         Proto("VkResult", "CreateSharedSwapchainsKHR",
-            [
-             Param("VkDevice", "device"),
+            [Param("VkDevice", "device"),
              Param("uint32_t", "swapchainCount"),
-             Param("VkSwapchainCreateInfoKHR", "pCreateInfos"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkSwapchainKHR", "pSwapchains"),
-            ]),
+             Param("const VkSwapchainCreateInfoKHR*", "pCreateInfos"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkSwapchainKHR*", "pSwapchains")]),
     ],
-
 )
 
-VK_KHR_xlib_surface = Extension(
-    name="VK_KHR_xlib_surface",
+VK_KHR_xcb_surface = Extension(
+    name="VK_KHR_xcb_surface",
     headers=["vulkan/vulkan.h"],
-    ifdef="VK_USE_PLATFORM_XLIB_KHR",
     objects=[],
     protos=[
-        Proto("VkResult", "CreateXlibSurfaceKHR",
-            [
-             Param("VkInstance", "instance"),
-             Param("VkXlibSurfaceCreateInfoKHR", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkSurfaceKHR", "pSurface"),
-            ]),
-        Proto("VkBool32", "GetPhysicalDeviceXlibPresentationSupportKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+        Proto("VkResult", "CreateXcbSurfaceKHR",
+            [Param("VkInstance", "instance"),
+             Param("const VkXcbSurfaceCreateInfoKHR*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkSurfaceKHR*", "pSurface")]),
+
+        Proto("VkBool32", "GetPhysicalDeviceXcbPresentationSupportKHR",
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("uint32_t", "queueFamilyIndex"),
-             Param("Display", "dpy"),
-             Param("VisualID", "visualID"),
-            ]),
+             Param("xcb_connection_t*", "connection"),
+             Param("xcb_visualid_t", "visual_id")]),
     ],
-
 )
 
-VK_KHR_xcb_surface = Extension(
-    name="VK_KHR_xcb_surface",
+VK_KHR_xlib_surface = Extension(
+    name="VK_KHR_xlib_surface",
     headers=["vulkan/vulkan.h"],
-    ifdef="VK_USE_PLATFORM_XCB_KHR",
     objects=[],
+    ifdef="VK_USE_PLATFORM_XLIB_KHR",
     protos=[
-        Proto("VkResult", "CreateXcbSurfaceKHR",
-            [
-             Param("VkInstance", "instance"),
-             Param("VkXcbSurfaceCreateInfoKHR", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkSurfaceKHR", "pSurface"),
-            ]),
-        Proto("VkBool32", "GetPhysicalDeviceXcbPresentationSupportKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+        Proto("VkResult", "CreateXlibSurfaceKHR",
+            [Param("VkInstance", "instance"),
+             Param("const VkXlibSurfaceCreateInfoKHR*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkSurfaceKHR*", "pSurface")]),
+
+        Proto("VkBool32", "GetPhysicalDeviceXlibPresentationSupportKHR",
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("uint32_t", "queueFamilyIndex"),
-             Param("xcb_connection_t", "connection"),
-             Param("xcb_visualid_t", "visual_id"),
-            ]),
+             Param("Display*", "dpy"),
+             Param("VisualID", "visualID")]),
     ],
-
 )
 
 VK_KHR_wayland_surface = Extension(
     name="VK_KHR_wayland_surface",
     headers=["vulkan/vulkan.h"],
-    ifdef="VK_USE_PLATFORM_WAYLAND_KHR",
     objects=[],
     protos=[
         Proto("VkResult", "CreateWaylandSurfaceKHR",
-            [
-             Param("VkInstance", "instance"),
-             Param("VkWaylandSurfaceCreateInfoKHR", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkSurfaceKHR", "pSurface"),
-            ]),
+            [Param("VkInstance", "instance"),
+             Param("const VkWaylandSurfaceCreateInfoKHR*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkSurfaceKHR*", "pSurface")]),
+
         Proto("VkBool32", "GetPhysicalDeviceWaylandPresentationSupportKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("uint32_t", "queueFamilyIndex"),
-             Param("wl_display", "display"),
-            ]),
+             Param("struct wl_display*", "display")]),
     ],
-
 )
 
 VK_KHR_mir_surface = Extension(
     name="VK_KHR_mir_surface",
     headers=["vulkan/vulkan.h"],
-    ifdef="VK_USE_PLATFORM_MIR_KHR",
     objects=[],
     protos=[
         Proto("VkResult", "CreateMirSurfaceKHR",
-            [
-             Param("VkInstance", "instance"),
-             Param("VkMirSurfaceCreateInfoKHR", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkSurfaceKHR", "pSurface"),
-            ]),
+            [Param("VkInstance", "instance"),
+             Param("const VkMirSurfaceCreateInfoKHR*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkSurfaceKHR*", "pSurface")]),
+
         Proto("VkBool32", "GetPhysicalDeviceMirPresentationSupportKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
+            [Param("VkPhysicalDevice", "physicalDevice"),
              Param("uint32_t", "queueFamilyIndex"),
-             Param("MirConnection", "connection"),
-            ]),
+             Param("MirConnection*", "connection")]),
     ],
-
 )
 
 VK_KHR_android_surface = Extension(
     name="VK_KHR_android_surface",
     headers=["vulkan/vulkan.h"],
-    ifdef="VK_USE_PLATFORM_ANDROID_KHR",
     objects=[],
     protos=[
         Proto("VkResult", "CreateAndroidSurfaceKHR",
-            [
-             Param("VkInstance", "instance"),
-             Param("VkAndroidSurfaceCreateInfoKHR", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkSurfaceKHR", "pSurface"),
-            ]),
+            [Param("VkInstance", "instance"),
+             Param("const VkAndroidSurfaceCreateInfoKHR*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkSurfaceKHR*", "pSurface")]),
     ],
-
 )
 
 VK_KHR_win32_surface = Extension(
     name="VK_KHR_win32_surface",
     headers=["vulkan/vulkan.h"],
-    ifdef="VK_USE_PLATFORM_WIN32_KHR",
     objects=[],
     protos=[
         Proto("VkResult", "CreateWin32SurfaceKHR",
-            [
-             Param("VkInstance", "instance"),
-             Param("VkWin32SurfaceCreateInfoKHR", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkSurfaceKHR", "pSurface"),
-            ]),
+            [Param("VkInstance", "instance"),
+             Param("const VkWin32SurfaceCreateInfoKHR*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkSurfaceKHR*", "pSurface")]),
+
         Proto("VkBool32", "GetPhysicalDeviceWin32PresentationSupportKHR",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
-             Param("uint32_t", "queueFamilyIndex"),
-            ]),
+            [Param("VkPhysicalDevice", "physicalDevice"),
+             Param("uint32_t", "queueFamilyIndex")]),
     ],
-
-)
-
-VK_KHR_sampler_mirror_clamp_to_edge = Extension(
-    name="VK_KHR_sampler_mirror_clamp_to_edge",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
 )
 
 VK_EXT_debug_report = Extension(
     name="VK_EXT_debug_report",
     headers=["vulkan/vulkan.h"],
-    ifdef="",
     objects=[
         "VkDebugReportCallbackEXT",
     ],
     protos=[
         Proto("VkResult", "CreateDebugReportCallbackEXT",
-            [
-             Param("VkInstance", "instance"),
-             Param("VkDebugReportCallbackCreateInfoEXT", "pCreateInfo"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-             Param("VkDebugReportCallbackEXT", "pCallback"),
-            ]),
+            [Param("VkInstance", "instance"),
+             Param("const VkDebugReportCallbackCreateInfoEXT*", "pCreateInfo"),
+             Param("const VkAllocationCallbacks*", "pAllocator"),
+             Param("VkDebugReportCallbackEXT*", "pCallback")]),
+
         Proto("void", "DestroyDebugReportCallbackEXT",
-            [
-             Param("VkInstance", "instance"),
+            [Param("VkInstance", "instance"),
              Param("VkDebugReportCallbackEXT", "callback"),
-             Param("VkAllocationCallbacks", "pAllocator"),
-            ]),
+             Param("const VkAllocationCallbacks*", "pAllocator")]),
+
         Proto("void", "DebugReportMessageEXT",
-            [
-             Param("VkInstance", "instance"),
+            [Param("VkInstance", "instance"),
              Param("VkDebugReportFlagsEXT", "flags"),
-             Param("VkDebugReportObjectTypeEXT", "objectType"),
+             Param("VkDebugReportObjectTypeEXT", "objType"),
              Param("uint64_t", "object"),
              Param("size_t", "location"),
-             Param("int32_t", "messageCode"),
-             Param("char", "pLayerPrefix"),
-             Param("char", "pMessage"),
-            ]),
+             Param("int32_t", "msgCode"),
+             Param("const char *", "pLayerPrefix"),
+             Param("const char *", "pMsg")]),
     ],
-
-)
-
-VK_NV_glsl_shader = Extension(
-    name="VK_NV_glsl_shader",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
-)
-
-VK_IMG_filter_cubic = Extension(
-    name="VK_IMG_filter_cubic",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
-)
-
-VK_AMD_rasterization_order = Extension(
-    name="VK_AMD_rasterization_order",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
-)
-
-VK_AMD_shader_trinary_minmax = Extension(
-    name="VK_AMD_shader_trinary_minmax",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
-)
-
-VK_AMD_shader_explicit_vertex_parameter = Extension(
-    name="VK_AMD_shader_explicit_vertex_parameter",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
 )
 
 VK_EXT_debug_marker = Extension(
     name="VK_EXT_debug_marker",
     headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
+    objects=[
+        "VkDebugMarkerObjectNameInfoEXT",
+        "VkDebugMarkerObjectTagInfoEXT",
+        "VkDebugMarkerMarkerInfoEXT"
+    ],
     protos=[
         Proto("VkResult", "DebugMarkerSetObjectTagEXT",
-            [
-             Param("VkDevice", "device"),
-             Param("VkDebugMarkerObjectTagInfoEXT", "pTagInfo"),
-            ]),
-        Proto("VkResult", "DebugMarkerSetObjectNameEXT",
-            [
-             Param("VkDevice", "device"),
-             Param("VkDebugMarkerObjectNameInfoEXT", "pNameInfo"),
-            ]),
-        Proto("void", "CmdDebugMarkerBeginEXT",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-             Param("VkDebugMarkerMarkerInfoEXT", "pMarkerInfo"),
-            ]),
-        Proto("void", "CmdDebugMarkerEndEXT",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-            ]),
-        Proto("void", "CmdDebugMarkerInsertEXT",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-             Param("VkDebugMarkerMarkerInfoEXT", "pMarkerInfo"),
-            ]),
-    ],
+            [Param("VkDevice", "device"),
+             Param("VkDebugMarkerObjectTagInfoEXT*", "pTagInfo")]),
 
-)
+        Proto("VkResult", "DebugMarkerSetObjectNameEXT",
+            [Param("VkDevice", "device"),
+             Param("VkDebugMarkerObjectNameInfoEXT*", "pNameInfo")]),
 
-VK_AMD_gcn_shader = Extension(
-    name="VK_AMD_gcn_shader",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
-)
+        Proto("void", "CmdDebugMarkerBeginEXT",
+            [Param("VkCommandBuffer", "commandBuffer"),
+             Param("VkDebugMarkerMarkerInfoEXT*", "pMarkerInfo")]),
 
-VK_NV_dedicated_allocation = Extension(
-    name="VK_NV_dedicated_allocation",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
-)
+        Proto("void", "CmdDebugMarkerEndEXT",
+            [Param("VkCommandBuffer", "commandBuffer")]),
 
-VK_AMD_draw_indirect_count = Extension(
-    name="VK_AMD_draw_indirect_count",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[
-        Proto("void", "CmdDrawIndirectCountAMD",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-             Param("VkBuffer", "buffer"),
-             Param("VkDeviceSize", "offset"),
-             Param("VkBuffer", "countBuffer"),
-             Param("VkDeviceSize", "countBufferOffset"),
-             Param("uint32_t", "maxDrawCount"),
-             Param("uint32_t", "stride"),
-            ]),
-        Proto("void", "CmdDrawIndexedIndirectCountAMD",
-            [
-             Param("VkCommandBuffer", "commandBuffer"),
-             Param("VkBuffer", "buffer"),
-             Param("VkDeviceSize", "offset"),
-             Param("VkBuffer", "countBuffer"),
-             Param("VkDeviceSize", "countBufferOffset"),
-             Param("uint32_t", "maxDrawCount"),
-             Param("uint32_t", "stride"),
-            ]),
+        Proto("void", "CmdDebugMarkerInsertEXT",
+            [Param("VkCommandBuffer", "commandBuffer"),
+             Param("VkDebugMarkerMarkerInfoEXT*", "pMarkerInfo")]),
     ],
-
-)
-
-VK_AMD_negative_viewport_height = Extension(
-    name="VK_AMD_negative_viewport_height",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
-)
-
-VK_AMD_gpu_shader_half_float = Extension(
-    name="VK_AMD_gpu_shader_half_float",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
 )
 
-VK_AMD_shader_ballot = Extension(
-    name="VK_AMD_shader_ballot",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
-)
+import sys
 
-VK_IMG_format_pvrtc = Extension(
-    name="VK_IMG_format_pvrtc",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
-)
+wsi_linux = ['Xcb', 'Xlib', 'Wayland', 'Mir', 'Display']
 
-VK_NV_external_memory_capabilities = Extension(
-    name="VK_NV_external_memory_capabilities",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[
-        Proto("VkResult", "GetPhysicalDeviceExternalImageFormatPropertiesNV",
-            [
-             Param("VkPhysicalDevice", "physicalDevice"),
-             Param("VkFormat", "format"),
-             Param("VkImageType", "type"),
-             Param("VkImageTiling", "tiling"),
-             Param("VkImageUsageFlags", "usage"),
-             Param("VkImageCreateFlags", "flags"),
-             Param("VkExternalMemoryHandleTypeFlagsNV", "externalHandleType"),
-             Param("VkExternalImageFormatPropertiesNV", "pExternalImageFormatProperties"),
-            ]),
-    ],
-
-)
+# Set up platform-specific display servers
+linux_display_servers = ['Xcb', 'Xlib', 'Wayland', 'Mir', 'Display']
+win32_display_servers = ['Win32']
+android_display_servers = ['Android']
 
-VK_NV_external_memory = Extension(
-    name="VK_NV_external_memory",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
-)
+# Define non-WSI platform-specific extensions
+android_only_exts = []
+linux_only_exts = []
+win32_only_exts = [VK_NV_external_memory_win32,
+#                  VK_NV_win32_keyed_mutex,
+                  ]
 
-VK_NV_external_memory_win32 = Extension(
-    name="VK_NV_external_memory_win32",
-    headers=["vulkan/vulkan.h"],
-    ifdef="VK_USE_PLATFORM_WIN32_KHR",
-    objects=[],
-    protos=[
-        Proto("VkResult", "GetMemoryWin32HandleNV",
-            [
-             Param("VkDevice", "device"),
-             Param("VkDeviceMemory", "memory"),
-             Param("VkExternalMemoryHandleTypeFlagsNV", "handleType"),
-             Param("HANDLE", "pHandle"),
-            ]),
-    ],
+# Define platform-specific WSI extensions
+android_wsi_exts = [VK_KHR_android_surface,
+                   ]
+linux_wsi_exts = [VK_KHR_xlib_surface,
+                  VK_KHR_xcb_surface,
+                  VK_KHR_wayland_surface,
+                  VK_KHR_mir_surface,
+                 ]
+win32_wsi_exts = [VK_KHR_win32_surface
+                 ]
 
-)
+# Define extensions common to all configurations
+common_exts = [VK_VERSION_1_0,
+               VK_KHR_surface,
+               VK_KHR_swapchain,
+               VK_KHR_display_swapchain,
+              ]
 
-VK_NV_win32_keyed_mutex = Extension(
-    name="VK_NV_win32_keyed_mutex",
-    headers=["vulkan/vulkan.h"],
-    ifdef="VK_USE_PLATFORM_WIN32_KHR",
-    objects=[],
-    protos=[],
-)
+# Define extensions not exported by the loader
+non_exported_exts = [VK_NV_external_memory_capabilities,
+                     VK_AMD_draw_indirect_count,
+                     VK_EXT_debug_report,
+                     VK_EXT_debug_marker,
+#                    VK_KHR_sampler_mirror_clamp_to_edge,
+#                    VK_NV_glsl_shader,
+#                    VK_IMG_filter_cubic,
+#                    VK_AMD_rasterization_order,
+#                    VK_AMD_shader_trinary_minmax,
+#                    VK_AMD_shader_explicit_vertex_parameter,
+#                    VK_AMD_gcn_shader,
+#                    VK_NV_dedicated_allocation,
+#                    VK_NV_external_memory,
+#                    VK_EXT_validation_flags,
+#                    VK_AMD_negative_viewport_height,
+#                    VK_AMD_gpu_shader_half_float,
+#                    VK_AMD_shader_ballot,
+#                    VK_IMG_format_pvrtc,
+                    ]
+non_android_exts = [VK_KHR_display,
+                   ]
+extensions = common_exts
+extensions_all = non_exported_exts
 
-VK_EXT_validation_flags = Extension(
-    name="VK_EXT_validation_flags",
-    headers=["vulkan/vulkan.h"],
-    ifdef="",
-    objects=[],
-    protos=[],
-)
+if sys.argv[1] in win32_display_servers:
+    extensions += win32_wsi_exts
+    extensions_all += extensions + win32_only_exts
+elif sys.argv[1] in linux_display_servers:
+    extensions += linux_wsi_exts
+    extensions_all += extensions + linux_only_exts
+elif sys.argv[1] in android_display_servers:
+    extensions += android_wsi_exts
+    extensions_all += extensions + android_only_exts
+else:
+    extensions += win32_wsi_exts + linux_wsi_exts + android_wsi_exts
+    extensions_all += extensions + win32_only_exts + linux_only_exts + android_only_exts
 
 object_dispatch_list = [
     "VkInstance",
@@ -1669,7 +1423,9 @@ object_dispatch_list = [
     "VkQueue",
     "VkCommandBuffer",
 ]
+
 object_non_dispatch_list = [
+    "VkCommandPool",
     "VkFence",
     "VkDeviceMemory",
     "VkBuffer",
@@ -1681,81 +1437,20 @@ object_non_dispatch_list = [
     "VkImageView",
     "VkShaderModule",
     "VkPipelineCache",
-    "VkPipeline",
     "VkPipelineLayout",
-    "VkSampler",
+    "VkPipeline",
     "VkDescriptorSetLayout",
+    "VkSampler",
     "VkDescriptorPool",
     "VkDescriptorSet",
-    "VkFramebuffer",
     "VkRenderPass",
-    "VkCommandPool",
-    "VkSurfaceKHR",
+    "VkFramebuffer",
     "VkSwapchainKHR",
+    "VkSurfaceKHR",
+    "VkDebugReportCallbackEXT",
     "VkDisplayKHR",
     "VkDisplayModeKHR",
-    "VkDebugReportCallbackEXT",
 ]
-#
-# Build lists of extensions for use by other codegen utilites
-import sys
-
-# Set up platform-specific display servers
-android_display_servers = ['Android']
-linux_display_servers   = ['Xcb', 'Xlib', 'Wayland', 'Mir', 'Display']
-win32_display_servers   = ['Win32']
-
-# Define platform-specific WSI extensions
-android_wsi_exts = [VK_KHR_android_surface, ]
-linux_wsi_exts   = [VK_KHR_xlib_surface, VK_KHR_xcb_surface, VK_KHR_wayland_surface, VK_KHR_mir_surface, ]
-win32_wsi_exts   = [VK_KHR_win32_surface, ]
-
-# Define non-WSI platform-specific extensions
-android_only_exts = []
-linux_only_exts   = []
-win32_only_exts   = [VK_NV_external_memory_win32, VK_NV_win32_keyed_mutex, ]
-
-# Define extensions common to all configurations
-common_exts = [VK_VERSION_1_0, VK_KHR_surface, VK_KHR_swapchain, VK_KHR_display_swapchain, ]
-
-# Define extensions not exported by the loader
-non_exported_exts = [
-    VK_KHR_display,
-    VK_KHR_sampler_mirror_clamp_to_edge,
-    VK_EXT_debug_report,
-    VK_NV_glsl_shader,
-    VK_IMG_filter_cubic,
-    VK_AMD_rasterization_order,
-    VK_AMD_shader_trinary_minmax,
-    VK_AMD_shader_explicit_vertex_parameter,
-    VK_EXT_debug_marker,
-    VK_AMD_gcn_shader,
-    VK_NV_dedicated_allocation,
-    VK_AMD_draw_indirect_count,
-    VK_AMD_negative_viewport_height,
-    VK_AMD_gpu_shader_half_float,
-    VK_AMD_shader_ballot,
-    VK_IMG_format_pvrtc,
-    VK_NV_external_memory_capabilities,
-    VK_NV_external_memory,
-    VK_EXT_validation_flags,
-    ]
-
-extensions = common_exts
-extensions_all = non_exported_exts
-
-if sys.argv[1] in win32_display_servers:
-    extensions += win32_wsi_exts
-    extensions_all += extensions + win32_only_exts
-elif sys.argv[1] in linux_display_servers:
-    extensions += linux_wsi_exts
-    extensions_all += extensions + linux_only_exts
-elif sys.argv[1] in android_display_servers:
-    extensions += android_wsi_exts
-    extensions_all += extensions + android_only_exts
-else:
-    extensions += win32_wsi_exts + linux_wsi_exts + android_wsi_exts
-    extensions_all += extensions + win32_only_exts + linux_only_exts + android_only_exts
 
 object_type_list = object_dispatch_list + object_non_dispatch_list
 
@@ -1778,4 +1473,3 @@ for ext in extensions_all:
     protos_all.extend(ext.protos)
 
 proto_all_names = [proto.name for proto in protos_all]
-