aboutsummaryrefslogtreecommitdiff
path: root/scripts/vulkan.py
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2016-11-18 14:44:37 -0700
committerMark Lobodzinski <mark@lunarg.com>2016-11-21 12:06:12 -0700
commit775df73e1d1a4f216b531e9f11c109fe32266801 (patch)
treef0db4f571c0723d279de2307f76279bf17f08d71 /scripts/vulkan.py
parent9d545a2b2871a004f0b4b7ad624aadf72a1c1c61 (diff)
downloadusermoji-775df73e1d1a4f216b531e9f11c109fe32266801.tar.xz
build: Move codegen scripts into scripts dir
- Set SCRIPTS_DIR in root CMakeLists.txt - Update android-generate.bat and android-generate.sh - Updated layer/loader/tests CMakeLists.txt files for new path - Updated test layer doc scripts for new location Change-Id: I2d519ec40883ebeec4e9daab8641ad65515bb08c
Diffstat (limited to 'scripts/vulkan.py')
-rw-r--r--scripts/vulkan.py1475
1 files changed, 1475 insertions, 0 deletions
diff --git a/scripts/vulkan.py b/scripts/vulkan.py
new file mode 100644
index 00000000..90007651
--- /dev/null
+++ b/scripts/vulkan.py
@@ -0,0 +1,1475 @@
+" ""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.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Author: Chia-I Wu <olv@lunarg.com>
+# Author: Jon Ashburn <jon@lunarg.com>
+# Author: Courtney Goeltzenleuchter <courtney@LunarG.com>
+# Author: Tobin Ehlis <tobin@lunarg.com>
+# Author: Tony Barbour <tony@LunarG.com>
+# Author: Gwan-gyeong Mun <kk.moon@samsung.com>
+
+class Param(object):
+ """A function parameter."""
+
+ def __init__(self, ty, name):
+ self.ty = ty
+ self.name = name
+
+ def c(self):
+ """Return the parameter in C."""
+ idx = self.ty.find("[")
+
+ # arrays have a different syntax
+ if idx >= 0:
+ return "%s %s%s" % (self.ty[:idx], self.name, self.ty[idx:])
+ 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):
+ """A function prototype."""
+
+ def __init__(self, ret, name, params=[]):
+ # the proto has only a param
+ if not isinstance(params, list):
+ params = [params]
+
+ self.ret = ret
+ self.name = name
+ self.params = params
+
+ def c_params(self, need_type=True, need_name=True):
+ """Return the parameter list in C."""
+ if self.params and (need_type or need_name):
+ if need_type and need_name:
+ return ", ".join([param.c() for param in self.params])
+ elif need_type:
+ return ", ".join([param.ty for param in self.params])
+ else:
+ return ", ".join([param.name for param in self.params])
+ else:
+ return "void" if need_type else ""
+
+ def c_decl(self, name, attr="", typed=False, need_param_names=True):
+ """Return a named declaration in C."""
+ if typed:
+ return "%s (%s*%s)(%s)" % (
+ self.ret,
+ attr + "_PTR " if attr else "",
+ name,
+ self.c_params(need_name=need_param_names))
+ else:
+ return "%s%s %s%s(%s)" % (
+ attr + "_ATTR " if attr else "",
+ self.ret,
+ attr + "_CALL " if attr else "",
+ name,
+ self.c_params(need_name=need_param_names))
+
+ def c_pretty_decl(self, name, attr=""):
+ """Return a named declaration in C, with vulkan.h formatting."""
+ plist = []
+ for param in self.params:
+ 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:]))
+
+ return "%s%s %s%s(\n%s)" % (
+ attr + "_ATTR " if attr else "",
+ self.ret,
+ attr + "_CALL " if attr else "",
+ name,
+ ",\n".join(plist))
+
+ def c_func(self, prefix="", attr=""):
+ """Return the prototype in C."""
+ return self.c_decl(prefix + self.name, attr=attr, typed=False)
+
+ def c_call(self):
+ """Return a call to the prototype in C."""
+ return "%s(%s)" % (self.name, self.c_params(need_type=False))
+
+ def object_in_params(self):
+ """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)
+
+class Extension(object):
+ def __init__(self, name, headers, objects, protos, ifdef = None):
+ self.name = name
+ self.headers = headers
+ self.objects = objects
+ self.protos = protos
+ self.ifdef = ifdef
+
+# VK core API
+VK_VERSION_1_0 = Extension(
+ name="VK_VERSION_1_0",
+ headers=["vulkan/vulkan.h"],
+ objects=[
+ "VkInstance",
+ "VkPhysicalDevice",
+ "VkDevice",
+ "VkQueue",
+ "VkSemaphore",
+ "VkCommandBuffer",
+ "VkFence",
+ "VkDeviceMemory",
+ "VkBuffer",
+ "VkImage",
+ "VkEvent",
+ "VkQueryPool",
+ "VkBufferView",
+ "VkImageView",
+ "VkShaderModule",
+ "VkPipelineCache",
+ "VkPipelineLayout",
+ "VkRenderPass",
+ "VkPipeline",
+ "VkDescriptorSetLayout",
+ "VkSampler",
+ "VkDescriptorPool",
+ "VkDescriptorSet",
+ "VkFramebuffer",
+ "VkCommandPool",
+ ],
+ protos=[
+ Proto("VkResult", "CreateInstance",
+ [Param("const VkInstanceCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkInstance*", "pInstance")]),
+
+ Proto("void", "DestroyInstance",
+ [Param("VkInstance", "instance"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "EnumeratePhysicalDevices",
+ [Param("VkInstance", "instance"),
+ Param("uint32_t*", "pPhysicalDeviceCount"),
+ Param("VkPhysicalDevice*", "pPhysicalDevices")]),
+
+ Proto("void", "GetPhysicalDeviceFeatures",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("VkPhysicalDeviceFeatures*", "pFeatures")]),
+
+ Proto("void", "GetPhysicalDeviceFormatProperties",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("VkFormat", "format"),
+ Param("VkFormatProperties*", "pFormatProperties")]),
+
+ Proto("VkResult", "GetPhysicalDeviceImageFormatProperties",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("VkFormat", "format"),
+ Param("VkImageType", "type"),
+ Param("VkImageTiling", "tiling"),
+ Param("VkImageUsageFlags", "usage"),
+ Param("VkImageCreateFlags", "flags"),
+ Param("VkImageFormatProperties*", "pImageFormatProperties")]),
+
+ Proto("void", "GetPhysicalDeviceProperties",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("VkPhysicalDeviceProperties*", "pProperties")]),
+
+ Proto("void", "GetPhysicalDeviceQueueFamilyProperties",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("uint32_t*", "pQueueFamilyPropertyCount"),
+ Param("VkQueueFamilyProperties*", "pQueueFamilyProperties")]),
+
+ Proto("void", "GetPhysicalDeviceMemoryProperties",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("VkPhysicalDeviceMemoryProperties*", "pMemoryProperties")]),
+
+ Proto("PFN_vkVoidFunction", "GetInstanceProcAddr",
+ [Param("VkInstance", "instance"),
+ Param("const char*", "pName")]),
+
+ Proto("PFN_vkVoidFunction", "GetDeviceProcAddr",
+ [Param("VkDevice", "device"),
+ Param("const char*", "pName")]),
+
+ Proto("VkResult", "CreateDevice",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("const VkDeviceCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkDevice*", "pDevice")]),
+
+ Proto("void", "DestroyDevice",
+ [Param("VkDevice", "device"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "EnumerateInstanceExtensionProperties",
+ [Param("const char*", "pLayerName"),
+ Param("uint32_t*", "pPropertyCount"),
+ Param("VkExtensionProperties*", "pProperties")]),
+
+ Proto("VkResult", "EnumerateDeviceExtensionProperties",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("const char*", "pLayerName"),
+ Param("uint32_t*", "pPropertyCount"),
+ Param("VkExtensionProperties*", "pProperties")]),
+
+ Proto("VkResult", "EnumerateInstanceLayerProperties",
+ [Param("uint32_t*", "pPropertyCount"),
+ Param("VkLayerProperties*", "pProperties")]),
+
+ Proto("VkResult", "EnumerateDeviceLayerProperties",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("uint32_t*", "pPropertyCount"),
+ Param("VkLayerProperties*", "pProperties")]),
+
+ Proto("void", "GetDeviceQueue",
+ [Param("VkDevice", "device"),
+ Param("uint32_t", "queueFamilyIndex"),
+ Param("uint32_t", "queueIndex"),
+ Param("VkQueue*", "pQueue")]),
+
+ Proto("VkResult", "QueueSubmit",
+ [Param("VkQueue", "queue"),
+ Param("uint32_t", "submitCount"),
+ Param("const VkSubmitInfo*", "pSubmits"),
+ Param("VkFence", "fence")]),
+
+ Proto("VkResult", "QueueWaitIdle",
+ [Param("VkQueue", "queue")]),
+
+ Proto("VkResult", "DeviceWaitIdle",
+ [Param("VkDevice", "device")]),
+
+ Proto("VkResult", "AllocateMemory",
+ [Param("VkDevice", "device"),
+ Param("const VkMemoryAllocateInfo*", "pAllocateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkDeviceMemory*", "pMemory")]),
+
+ Proto("void", "FreeMemory",
+ [Param("VkDevice", "device"),
+ Param("VkDeviceMemory", "memory"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "MapMemory",
+ [Param("VkDevice", "device"),
+ Param("VkDeviceMemory", "memory"),
+ Param("VkDeviceSize", "offset"),
+ Param("VkDeviceSize", "size"),
+ Param("VkMemoryMapFlags", "flags"),
+ Param("void**", "ppData")]),
+
+ Proto("void", "UnmapMemory",
+ [Param("VkDevice", "device"),
+ Param("VkDeviceMemory", "memory")]),
+
+ Proto("VkResult", "FlushMappedMemoryRanges",
+ [Param("VkDevice", "device"),
+ Param("uint32_t", "memoryRangeCount"),
+ Param("const VkMappedMemoryRange*", "pMemoryRanges")]),
+
+ Proto("VkResult", "InvalidateMappedMemoryRanges",
+ [Param("VkDevice", "device"),
+ Param("uint32_t", "memoryRangeCount"),
+ Param("const VkMappedMemoryRange*", "pMemoryRanges")]),
+
+ Proto("void", "GetDeviceMemoryCommitment",
+ [Param("VkDevice", "device"),
+ Param("VkDeviceMemory", "memory"),
+ Param("VkDeviceSize*", "pCommittedMemoryInBytes")]),
+
+ Proto("VkResult", "BindBufferMemory",
+ [Param("VkDevice", "device"),
+ Param("VkBuffer", "buffer"),
+ Param("VkDeviceMemory", "memory"),
+ Param("VkDeviceSize", "memoryOffset")]),
+
+ Proto("VkResult", "BindImageMemory",
+ [Param("VkDevice", "device"),
+ Param("VkImage", "image"),
+ Param("VkDeviceMemory", "memory"),
+ Param("VkDeviceSize", "memoryOffset")]),
+
+ Proto("void", "GetBufferMemoryRequirements",
+ [Param("VkDevice", "device"),
+ Param("VkBuffer", "buffer"),
+ Param("VkMemoryRequirements*", "pMemoryRequirements")]),
+
+ Proto("void", "GetImageMemoryRequirements",
+ [Param("VkDevice", "device"),
+ Param("VkImage", "image"),
+ Param("VkMemoryRequirements*", "pMemoryRequirements")]),
+
+ Proto("void", "GetImageSparseMemoryRequirements",
+ [Param("VkDevice", "device"),
+ Param("VkImage", "image"),
+ Param("uint32_t*", "pSparseMemoryRequirementCount"),
+ Param("VkSparseImageMemoryRequirements*", "pSparseMemoryRequirements")]),
+
+ Proto("void", "GetPhysicalDeviceSparseImageFormatProperties",
+ [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")]),
+
+ Proto("VkResult", "QueueBindSparse",
+ [Param("VkQueue", "queue"),
+ Param("uint32_t", "bindInfoCount"),
+ Param("const VkBindSparseInfo*", "pBindInfo"),
+ Param("VkFence", "fence")]),
+
+ Proto("VkResult", "CreateFence",
+ [Param("VkDevice", "device"),
+ Param("const VkFenceCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkFence*", "pFence")]),
+
+ Proto("void", "DestroyFence",
+ [Param("VkDevice", "device"),
+ Param("VkFence", "fence"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "ResetFences",
+ [Param("VkDevice", "device"),
+ Param("uint32_t", "fenceCount"),
+ Param("const VkFence*", "pFences")]),
+
+ Proto("VkResult", "GetFenceStatus",
+ [Param("VkDevice", "device"),
+ Param("VkFence", "fence")]),
+
+ Proto("VkResult", "WaitForFences",
+ [Param("VkDevice", "device"),
+ Param("uint32_t", "fenceCount"),
+ Param("const VkFence*", "pFences"),
+ Param("VkBool32", "waitAll"),
+ Param("uint64_t", "timeout")]),
+
+ Proto("VkResult", "CreateSemaphore",
+ [Param("VkDevice", "device"),
+ Param("const VkSemaphoreCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkSemaphore*", "pSemaphore")]),
+
+ Proto("void", "DestroySemaphore",
+ [Param("VkDevice", "device"),
+ Param("VkSemaphore", "semaphore"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "CreateEvent",
+ [Param("VkDevice", "device"),
+ Param("const VkEventCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkEvent*", "pEvent")]),
+
+ Proto("void", "DestroyEvent",
+ [Param("VkDevice", "device"),
+ Param("VkEvent", "event"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "GetEventStatus",
+ [Param("VkDevice", "device"),
+ Param("VkEvent", "event")]),
+
+ Proto("VkResult", "SetEvent",
+ [Param("VkDevice", "device"),
+ Param("VkEvent", "event")]),
+
+ Proto("VkResult", "ResetEvent",
+ [Param("VkDevice", "device"),
+ Param("VkEvent", "event")]),
+
+ Proto("VkResult", "CreateQueryPool",
+ [Param("VkDevice", "device"),
+ Param("const VkQueryPoolCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkQueryPool*", "pQueryPool")]),
+
+ Proto("void", "DestroyQueryPool",
+ [Param("VkDevice", "device"),
+ Param("VkQueryPool", "queryPool"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "GetQueryPoolResults",
+ [Param("VkDevice", "device"),
+ Param("VkQueryPool", "queryPool"),
+ Param("uint32_t", "firstQuery"),
+ Param("uint32_t", "queryCount"),
+ Param("size_t", "dataSize"),
+ Param("void*", "pData"),
+ Param("VkDeviceSize", "stride"),
+ Param("VkQueryResultFlags", "flags")]),
+
+ Proto("VkResult", "CreateBuffer",
+ [Param("VkDevice", "device"),
+ Param("const VkBufferCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkBuffer*", "pBuffer")]),
+
+ Proto("void", "DestroyBuffer",
+ [Param("VkDevice", "device"),
+ Param("VkBuffer", "buffer"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "CreateBufferView",
+ [Param("VkDevice", "device"),
+ Param("const VkBufferViewCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkBufferView*", "pView")]),
+
+ Proto("void", "DestroyBufferView",
+ [Param("VkDevice", "device"),
+ Param("VkBufferView", "bufferView"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "CreateImage",
+ [Param("VkDevice", "device"),
+ Param("const VkImageCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkImage*", "pImage")]),
+
+ Proto("void", "DestroyImage",
+ [Param("VkDevice", "device"),
+ Param("VkImage", "image"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("void", "GetImageSubresourceLayout",
+ [Param("VkDevice", "device"),
+ Param("VkImage", "image"),
+ Param("const VkImageSubresource*", "pSubresource"),
+ Param("VkSubresourceLayout*", "pLayout")]),
+
+ Proto("VkResult", "CreateImageView",
+ [Param("VkDevice", "device"),
+ Param("const VkImageViewCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkImageView*", "pView")]),
+
+ Proto("void", "DestroyImageView",
+ [Param("VkDevice", "device"),
+ Param("VkImageView", "imageView"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "CreateShaderModule",
+ [Param("VkDevice", "device"),
+ Param("const VkShaderModuleCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkShaderModule*", "pShaderModule")]),
+
+ Proto("void", "DestroyShaderModule",
+ [Param("VkDevice", "device"),
+ Param("VkShaderModule", "shaderModule"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "CreatePipelineCache",
+ [Param("VkDevice", "device"),
+ Param("const VkPipelineCacheCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkPipelineCache*", "pPipelineCache")]),
+
+ Proto("void", "DestroyPipelineCache",
+ [Param("VkDevice", "device"),
+ Param("VkPipelineCache", "pipelineCache"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "GetPipelineCacheData",
+ [Param("VkDevice", "device"),
+ Param("VkPipelineCache", "pipelineCache"),
+ Param("size_t*", "pDataSize"),
+ Param("void*", "pData")]),
+
+ Proto("VkResult", "MergePipelineCaches",
+ [Param("VkDevice", "device"),
+ Param("VkPipelineCache", "dstCache"),
+ Param("uint32_t", "srcCacheCount"),
+ Param("const VkPipelineCache*", "pSrcCaches")]),
+
+ Proto("VkResult", "CreateGraphicsPipelines",
+ [Param("VkDevice", "device"),
+ Param("VkPipelineCache", "pipelineCache"),
+ Param("uint32_t", "createInfoCount"),
+ Param("const VkGraphicsPipelineCreateInfo*", "pCreateInfos"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkPipeline*", "pPipelines")]),
+
+ Proto("VkResult", "CreateComputePipelines",
+ [Param("VkDevice", "device"),
+ Param("VkPipelineCache", "pipelineCache"),
+ Param("uint32_t", "createInfoCount"),
+ Param("const VkComputePipelineCreateInfo*", "pCreateInfos"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkPipeline*", "pPipelines")]),
+
+ Proto("void", "DestroyPipeline",
+ [Param("VkDevice", "device"),
+ Param("VkPipeline", "pipeline"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "CreatePipelineLayout",
+ [Param("VkDevice", "device"),
+ Param("const VkPipelineLayoutCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkPipelineLayout*", "pPipelineLayout")]),
+
+ Proto("void", "DestroyPipelineLayout",
+ [Param("VkDevice", "device"),
+ Param("VkPipelineLayout", "pipelineLayout"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "CreateSampler",
+ [Param("VkDevice", "device"),
+ Param("const VkSamplerCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkSampler*", "pSampler")]),
+
+ Proto("void", "DestroySampler",
+ [Param("VkDevice", "device"),
+ Param("VkSampler", "sampler"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "CreateDescriptorSetLayout",
+ [Param("VkDevice", "device"),
+ Param("const VkDescriptorSetLayoutCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkDescriptorSetLayout*", "pSetLayout")]),
+
+ Proto("void", "DestroyDescriptorSetLayout",
+ [Param("VkDevice", "device"),
+ Param("VkDescriptorSetLayout", "descriptorSetLayout"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "CreateDescriptorPool",
+ [Param("VkDevice", "device"),
+ Param("const VkDescriptorPoolCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkDescriptorPool*", "pDescriptorPool")]),
+
+ Proto("void", "DestroyDescriptorPool",
+ [Param("VkDevice", "device"),
+ Param("VkDescriptorPool", "descriptorPool"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "ResetDescriptorPool",
+ [Param("VkDevice", "device"),
+ Param("VkDescriptorPool", "descriptorPool"),
+ Param("VkDescriptorPoolResetFlags", "flags")]),
+
+ Proto("VkResult", "AllocateDescriptorSets",
+ [Param("VkDevice", "device"),
+ Param("const VkDescriptorSetAllocateInfo*", "pAllocateInfo"),
+ Param("VkDescriptorSet*", "pDescriptorSets")]),
+
+ Proto("VkResult", "FreeDescriptorSets",
+ [Param("VkDevice", "device"),
+ Param("VkDescriptorPool", "descriptorPool"),
+ Param("uint32_t", "descriptorSetCount"),
+ Param("const VkDescriptorSet*", "pDescriptorSets")]),
+
+ Proto("void", "UpdateDescriptorSets",
+ [Param("VkDevice", "device"),
+ Param("uint32_t", "descriptorWriteCount"),
+ Param("const VkWriteDescriptorSet*", "pDescriptorWrites"),
+ Param("uint32_t", "descriptorCopyCount"),
+ Param("const VkCopyDescriptorSet*", "pDescriptorCopies")]),
+
+ Proto("VkResult", "CreateFramebuffer",
+ [Param("VkDevice", "device"),
+ Param("const VkFramebufferCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkFramebuffer*", "pFramebuffer")]),
+
+ Proto("void", "DestroyFramebuffer",
+ [Param("VkDevice", "device"),
+ Param("VkFramebuffer", "framebuffer"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "CreateRenderPass",
+ [Param("VkDevice", "device"),
+ Param("const VkRenderPassCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkRenderPass*", "pRenderPass")]),
+
+ Proto("void", "DestroyRenderPass",
+ [Param("VkDevice", "device"),
+ Param("VkRenderPass", "renderPass"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("void", "GetRenderAreaGranularity",
+ [Param("VkDevice", "device"),
+ Param("VkRenderPass", "renderPass"),
+ Param("VkExtent2D*", "pGranularity")]),
+
+ Proto("VkResult", "CreateCommandPool",
+ [Param("VkDevice", "device"),
+ Param("const VkCommandPoolCreateInfo*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkCommandPool*", "pCommandPool")]),
+
+ Proto("void", "DestroyCommandPool",
+ [Param("VkDevice", "device"),
+ Param("VkCommandPool", "commandPool"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "ResetCommandPool",
+ [Param("VkDevice", "device"),
+ Param("VkCommandPool", "commandPool"),
+ Param("VkCommandPoolResetFlags", "flags")]),
+
+ Proto("VkResult", "AllocateCommandBuffers",
+ [Param("VkDevice", "device"),
+ Param("const VkCommandBufferAllocateInfo*", "pAllocateInfo"),
+ Param("VkCommandBuffer*", "pCommandBuffers")]),
+
+ Proto("void", "FreeCommandBuffers",
+ [Param("VkDevice", "device"),
+ Param("VkCommandPool", "commandPool"),
+ Param("uint32_t", "commandBufferCount"),
+ Param("const VkCommandBuffer*", "pCommandBuffers")]),
+
+ Proto("VkResult", "BeginCommandBuffer",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("const VkCommandBufferBeginInfo*", "pBeginInfo")]),
+
+ Proto("VkResult", "EndCommandBuffer",
+ [Param("VkCommandBuffer", "commandBuffer")]),
+
+ Proto("VkResult", "ResetCommandBuffer",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkCommandBufferResetFlags", "flags")]),
+
+ Proto("void", "CmdBindPipeline",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkPipelineBindPoint", "pipelineBindPoint"),
+ Param("VkPipeline", "pipeline")]),
+
+ Proto("void", "CmdSetViewport",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("uint32_t", "firstViewport"),
+ Param("uint32_t", "viewportCount"),
+ Param("const VkViewport*", "pViewports")]),
+
+ Proto("void", "CmdSetScissor",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("uint32_t", "firstScissor"),
+ Param("uint32_t", "scissorCount"),
+ Param("const VkRect2D*", "pScissors")]),
+
+ Proto("void", "CmdSetLineWidth",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("float", "lineWidth")]),
+
+ Proto("void", "CmdSetDepthBias",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("float", "depthBiasConstantFactor"),
+ Param("float", "depthBiasClamp"),
+ Param("float", "depthBiasSlopeFactor")]),
+
+ Proto("void", "CmdSetBlendConstants",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("const float[4]", "blendConstants")]),
+
+ Proto("void", "CmdSetDepthBounds",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("float", "minDepthBounds"),
+ Param("float", "maxDepthBounds")]),
+
+ Proto("void", "CmdSetStencilCompareMask",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkStencilFaceFlags", "faceMask"),
+ Param("uint32_t", "compareMask")]),
+
+ Proto("void", "CmdSetStencilWriteMask",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkStencilFaceFlags", "faceMask"),
+ Param("uint32_t", "writeMask")]),
+
+ Proto("void", "CmdSetStencilReference",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkStencilFaceFlags", "faceMask"),
+ Param("uint32_t", "reference")]),
+
+ Proto("void", "CmdBindDescriptorSets",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkPipelineBindPoint", "pipelineBindPoint"),
+ Param("VkPipelineLayout", "layout"),
+ Param("uint32_t", "firstSet"),
+ Param("uint32_t", "descriptorSetCount"),
+ Param("const VkDescriptorSet*", "pDescriptorSets"),
+ Param("uint32_t", "dynamicOffsetCount"),
+ Param("const uint32_t*", "pDynamicOffsets")]),
+
+ Proto("void", "CmdBindIndexBuffer",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkBuffer", "buffer"),
+ Param("VkDeviceSize", "offset"),
+ Param("VkIndexType", "indexType")]),
+
+ Proto("void", "CmdBindVertexBuffers",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("uint32_t", "firstBinding"),
+ Param("uint32_t", "bindingCount"),
+ Param("const VkBuffer*", "pBuffers"),
+ Param("const VkDeviceSize*", "pOffsets")]),
+
+ Proto("void", "CmdDraw",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("uint32_t", "vertexCount"),
+ Param("uint32_t", "instanceCount"),
+ Param("uint32_t", "firstVertex"),
+ Param("uint32_t", "firstInstance")]),
+
+ Proto("void", "CmdDrawIndexed",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("uint32_t", "indexCount"),
+ Param("uint32_t", "instanceCount"),
+ Param("uint32_t", "firstIndex"),
+ Param("int32_t", "vertexOffset"),
+ Param("uint32_t", "firstInstance")]),
+
+ Proto("void", "CmdDrawIndirect",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkBuffer", "buffer"),
+ Param("VkDeviceSize", "offset"),
+ Param("uint32_t", "drawCount"),
+ Param("uint32_t", "stride")]),
+
+ Proto("void", "CmdDrawIndexedIndirect",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkBuffer", "buffer"),
+ Param("VkDeviceSize", "offset"),
+ Param("uint32_t", "drawCount"),
+ Param("uint32_t", "stride")]),
+
+ Proto("void", "CmdDispatch",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("uint32_t", "x"),
+ Param("uint32_t", "y"),
+ Param("uint32_t", "z")]),
+
+ Proto("void", "CmdDispatchIndirect",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkBuffer", "buffer"),
+ Param("VkDeviceSize", "offset")]),
+
+ Proto("void", "CmdCopyBuffer",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkBuffer", "srcBuffer"),
+ Param("VkBuffer", "dstBuffer"),
+ Param("uint32_t", "regionCount"),
+ Param("const VkBufferCopy*", "pRegions")]),
+
+ Proto("void", "CmdCopyImage",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkImage", "srcImage"),
+ Param("VkImageLayout", "srcImageLayout"),
+ Param("VkImage", "dstImage"),
+ Param("VkImageLayout", "dstImageLayout"),
+ Param("uint32_t", "regionCount"),
+ Param("const VkImageCopy*", "pRegions")]),
+
+ Proto("void", "CmdBlitImage",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkImage", "srcImage"),
+ Param("VkImageLayout", "srcImageLayout"),
+ Param("VkImage", "dstImage"),
+ Param("VkImageLayout", "dstImageLayout"),
+ Param("uint32_t", "regionCount"),
+ Param("const VkImageBlit*", "pRegions"),
+ Param("VkFilter", "filter")]),
+
+ Proto("void", "CmdCopyBufferToImage",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkBuffer", "srcBuffer"),
+ Param("VkImage", "dstImage"),
+ Param("VkImageLayout", "dstImageLayout"),
+ Param("uint32_t", "regionCount"),
+ Param("const VkBufferImageCopy*", "pRegions")]),
+
+ Proto("void", "CmdCopyImageToBuffer",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkImage", "srcImage"),
+ Param("VkImageLayout", "srcImageLayout"),
+ Param("VkBuffer", "dstBuffer"),
+ Param("uint32_t", "regionCount"),
+ Param("const VkBufferImageCopy*", "pRegions")]),
+
+ Proto("void", "CmdUpdateBuffer",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkBuffer", "dstBuffer"),
+ Param("VkDeviceSize", "dstOffset"),
+ Param("VkDeviceSize", "dataSize"),
+ Param("const void*", "pData")]),
+
+ Proto("void", "CmdFillBuffer",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkBuffer", "dstBuffer"),
+ Param("VkDeviceSize", "dstOffset"),
+ Param("VkDeviceSize", "size"),
+ Param("uint32_t", "data")]),
+
+ Proto("void", "CmdClearColorImage",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkImage", "image"),
+ Param("VkImageLayout", "imageLayout"),
+ Param("const VkClearColorValue*", "pColor"),
+ Param("uint32_t", "rangeCount"),
+ Param("const VkImageSubresourceRange*", "pRanges")]),
+
+ Proto("void", "CmdClearDepthStencilImage",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkImage", "image"),
+ Param("VkImageLayout", "imageLayout"),
+ Param("const VkClearDepthStencilValue*", "pDepthStencil"),
+ Param("uint32_t", "rangeCount"),
+ Param("const VkImageSubresourceRange*", "pRanges")]),
+
+ Proto("void", "CmdClearAttachments",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("uint32_t", "attachmentCount"),
+ Param("const VkClearAttachment*", "pAttachments"),
+ Param("uint32_t", "rectCount"),
+ Param("const VkClearRect*", "pRects")]),
+
+ Proto("void", "CmdResolveImage",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkImage", "srcImage"),
+ Param("VkImageLayout", "srcImageLayout"),
+ Param("VkImage", "dstImage"),
+ Param("VkImageLayout", "dstImageLayout"),
+ Param("uint32_t", "regionCount"),
+ Param("const VkImageResolve*", "pRegions")]),
+
+ Proto("void", "CmdSetEvent",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkEvent", "event"),
+ Param("VkPipelineStageFlags", "stageMask")]),
+
+ Proto("void", "CmdResetEvent",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkEvent", "event"),
+ Param("VkPipelineStageFlags", "stageMask")]),
+
+ Proto("void", "CmdWaitEvents",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("uint32_t", "eventCount"),
+ Param("const VkEvent*", "pEvents"),
+ Param("VkPipelineStageFlags", "srcStageMask"),
+ Param("VkPipelineStageFlags", "dstStageMask"),
+ Param("uint32_t", "memoryBarrierCount"),
+ Param("const VkMemoryBarrier*", "pMemoryBarriers"),
+ Param("uint32_t", "bufferMemoryBarrierCount"),
+ Param("const VkBufferMemoryBarrier*", "pBufferMemoryBarriers"),
+ Param("uint32_t", "imageMemoryBarrierCount"),
+ Param("const VkImageMemoryBarrier*", "pImageMemoryBarriers")]),
+
+ Proto("void", "CmdPipelineBarrier",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkPipelineStageFlags", "srcStageMask"),
+ Param("VkPipelineStageFlags", "dstStageMask"),
+ Param("VkDependencyFlags", "dependencyFlags"),
+ Param("uint32_t", "memoryBarrierCount"),
+ Param("const VkMemoryBarrier*", "pMemoryBarriers"),
+ Param("uint32_t", "bufferMemoryBarrierCount"),
+ Param("const VkBufferMemoryBarrier*", "pBufferMemoryBarriers"),
+ Param("uint32_t", "imageMemoryBarrierCount"),
+ Param("const VkImageMemoryBarrier*", "pImageMemoryBarriers")]),
+
+ Proto("void", "CmdBeginQuery",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkQueryPool", "queryPool"),
+ Param("uint32_t", "query"),
+ Param("VkQueryControlFlags", "flags")]),
+
+ Proto("void", "CmdEndQuery",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkQueryPool", "queryPool"),
+ Param("uint32_t", "query")]),
+
+ Proto("void", "CmdResetQueryPool",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkQueryPool", "queryPool"),
+ Param("uint32_t", "firstQuery"),
+ Param("uint32_t", "queryCount")]),
+
+ Proto("void", "CmdWriteTimestamp",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkPipelineStageFlagBits", "pipelineStage"),
+ Param("VkQueryPool", "queryPool"),
+ Param("uint32_t", "query")]),
+
+ Proto("void", "CmdCopyQueryPoolResults",
+ [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")]),
+
+ Proto("void", "CmdPushConstants",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkPipelineLayout", "layout"),
+ Param("VkShaderStageFlags", "stageFlags"),
+ Param("uint32_t", "offset"),
+ Param("uint32_t", "size"),
+ Param("const void*", "pValues")]),
+
+ Proto("void", "CmdBeginRenderPass",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("const VkRenderPassBeginInfo*", "pRenderPassBegin"),
+ Param("VkSubpassContents", "contents")]),
+
+ Proto("void", "CmdNextSubpass",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkSubpassContents", "contents")]),
+
+ Proto("void", "CmdEndRenderPass",
+ [Param("VkCommandBuffer", "commandBuffer")]),
+
+ Proto("void", "CmdExecuteCommands",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("uint32_t", "commandBufferCount"),
+ 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"],
+ objects=["vkSurfaceKHR"],
+ protos=[
+ Proto("void", "DestroySurfaceKHR",
+ [Param("VkInstance", "instance"),
+ Param("VkSurfaceKHR", "surface"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("VkResult", "GetPhysicalDeviceSurfaceSupportKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("uint32_t", "queueFamilyIndex"),
+ Param("VkSurfaceKHR", "surface"),
+ Param("VkBool32*", "pSupported")]),
+
+ Proto("VkResult", "GetPhysicalDeviceSurfaceCapabilitiesKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("VkSurfaceKHR", "surface"),
+ Param("VkSurfaceCapabilitiesKHR*", "pSurfaceCapabilities")]),
+
+ Proto("VkResult", "GetPhysicalDeviceSurfaceFormatsKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("VkSurfaceKHR", "surface"),
+ Param("uint32_t*", "pSurfaceFormatCount"),
+ Param("VkSurfaceFormatKHR*", "pSurfaceFormats")]),
+
+ Proto("VkResult", "GetPhysicalDeviceSurfacePresentModesKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("VkSurfaceKHR", "surface"),
+ Param("uint32_t*", "pPresentModeCount"),
+ Param("VkPresentModeKHR*", "pPresentModes")]),
+ ],
+)
+
+VK_KHR_display = Extension(
+ name="VK_KHR_display",
+ headers=["vulkan/vulkan.h"],
+ objects=['VkSurfaceKHR', 'VkDisplayModeKHR'],
+ protos=[
+ Proto("VkResult", "GetPhysicalDeviceDisplayPropertiesKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("uint32_t*", "pPropertyCount"),
+ Param("VkDisplayPropertiesKHR*", "pProperties")]),
+
+ Proto("VkResult", "GetPhysicalDeviceDisplayPlanePropertiesKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("uint32_t*", "pPropertyCount"),
+ Param("VkDisplayPlanePropertiesKHR*", "pProperties")]),
+
+ Proto("VkResult", "GetDisplayPlaneSupportedDisplaysKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("uint32_t", "planeIndex"),
+ Param("uint32_t*", "pDisplayCount"),
+ Param("VkDisplayKHR*", "pDisplays")]),
+
+ Proto("VkResult", "GetDisplayModePropertiesKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("VkDisplayKHR", "display"),
+ Param("uint32_t*", "pPropertyCount"),
+ Param("VkDisplayModePropertiesKHR*", "pProperties")]),
+
+ Proto("VkResult", "CreateDisplayModeKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("VkDisplayKHR", "display"),
+ Param("const VkDisplayModeCreateInfoKHR*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkDisplayModeKHR*", "pMode")]),
+
+ Proto("VkResult", "GetDisplayPlaneCapabilitiesKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("VkDisplayModeKHR", "mode"),
+ Param("uint32_t", "planeIndex"),
+ Param("VkDisplayPlaneCapabilitiesKHR*", "pCapabilities")]),
+
+ Proto("VkResult", "CreateDisplayPlaneSurfaceKHR",
+ [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"],
+ objects=["VkDisplayPresentInfoKHR"],
+ protos=[
+ Proto("VkResult", "CreateSharedSwapchainsKHR",
+ [Param("VkDevice", "device"),
+ Param("uint32_t", "swapchainCount"),
+ Param("const VkSwapchainCreateInfoKHR*", "pCreateInfos"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkSwapchainKHR*", "pSwapchains")]),
+ ],
+)
+
+VK_KHR_xcb_surface = Extension(
+ name="VK_KHR_xcb_surface",
+ headers=["vulkan/vulkan.h"],
+ objects=[],
+ protos=[
+ 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("xcb_connection_t*", "connection"),
+ Param("xcb_visualid_t", "visual_id")]),
+ ],
+)
+
+VK_KHR_xlib_surface = Extension(
+ name="VK_KHR_xlib_surface",
+ headers=["vulkan/vulkan.h"],
+ objects=[],
+ ifdef="VK_USE_PLATFORM_XLIB_KHR",
+ protos=[
+ 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("Display*", "dpy"),
+ Param("VisualID", "visualID")]),
+ ],
+)
+
+VK_KHR_wayland_surface = Extension(
+ name="VK_KHR_wayland_surface",
+ headers=["vulkan/vulkan.h"],
+ objects=[],
+ protos=[
+ Proto("VkResult", "CreateWaylandSurfaceKHR",
+ [Param("VkInstance", "instance"),
+ Param("const VkWaylandSurfaceCreateInfoKHR*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkSurfaceKHR*", "pSurface")]),
+
+ Proto("VkBool32", "GetPhysicalDeviceWaylandPresentationSupportKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("uint32_t", "queueFamilyIndex"),
+ Param("struct wl_display*", "display")]),
+ ],
+)
+
+VK_KHR_mir_surface = Extension(
+ name="VK_KHR_mir_surface",
+ headers=["vulkan/vulkan.h"],
+ objects=[],
+ protos=[
+ Proto("VkResult", "CreateMirSurfaceKHR",
+ [Param("VkInstance", "instance"),
+ Param("const VkMirSurfaceCreateInfoKHR*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkSurfaceKHR*", "pSurface")]),
+
+ Proto("VkBool32", "GetPhysicalDeviceMirPresentationSupportKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("uint32_t", "queueFamilyIndex"),
+ Param("MirConnection*", "connection")]),
+ ],
+)
+
+VK_KHR_android_surface = Extension(
+ name="VK_KHR_android_surface",
+ headers=["vulkan/vulkan.h"],
+ objects=[],
+ protos=[
+ Proto("VkResult", "CreateAndroidSurfaceKHR",
+ [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"],
+ objects=[],
+ protos=[
+ Proto("VkResult", "CreateWin32SurfaceKHR",
+ [Param("VkInstance", "instance"),
+ Param("const VkWin32SurfaceCreateInfoKHR*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkSurfaceKHR*", "pSurface")]),
+
+ Proto("VkBool32", "GetPhysicalDeviceWin32PresentationSupportKHR",
+ [Param("VkPhysicalDevice", "physicalDevice"),
+ Param("uint32_t", "queueFamilyIndex")]),
+ ],
+)
+
+VK_EXT_debug_report = Extension(
+ name="VK_EXT_debug_report",
+ headers=["vulkan/vulkan.h"],
+ objects=[
+ "VkDebugReportCallbackEXT",
+ ],
+ protos=[
+ Proto("VkResult", "CreateDebugReportCallbackEXT",
+ [Param("VkInstance", "instance"),
+ Param("const VkDebugReportCallbackCreateInfoEXT*", "pCreateInfo"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkDebugReportCallbackEXT*", "pCallback")]),
+
+ Proto("void", "DestroyDebugReportCallbackEXT",
+ [Param("VkInstance", "instance"),
+ Param("VkDebugReportCallbackEXT", "callback"),
+ Param("const VkAllocationCallbacks*", "pAllocator")]),
+
+ Proto("void", "DebugReportMessageEXT",
+ [Param("VkInstance", "instance"),
+ Param("VkDebugReportFlagsEXT", "flags"),
+ Param("VkDebugReportObjectTypeEXT", "objType"),
+ Param("uint64_t", "object"),
+ Param("size_t", "location"),
+ Param("int32_t", "msgCode"),
+ Param("const char *", "pLayerPrefix"),
+ Param("const char *", "pMsg")]),
+ ],
+)
+
+VK_EXT_debug_marker = Extension(
+ name="VK_EXT_debug_marker",
+ headers=["vulkan/vulkan.h"],
+ 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")]),
+ ],
+)
+
+import sys
+
+wsi_linux = ['Xcb', 'Xlib', 'Wayland', 'Mir', 'Display']
+
+# Set up platform-specific display servers
+linux_display_servers = ['Xcb', 'Xlib', 'Wayland', 'Mir', 'Display']
+win32_display_servers = ['Win32']
+android_display_servers = ['Android']
+
+# 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 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,
+ ]
+
+# 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
+
+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",
+ "VkPhysicalDevice",
+ "VkDevice",
+ "VkQueue",
+ "VkCommandBuffer",
+]
+
+object_non_dispatch_list = [
+ "VkCommandPool",
+ "VkFence",
+ "VkDeviceMemory",
+ "VkBuffer",
+ "VkImage",
+ "VkSemaphore",
+ "VkEvent",
+ "VkQueryPool",
+ "VkBufferView",
+ "VkImageView",
+ "VkShaderModule",
+ "VkPipelineCache",
+ "VkPipelineLayout",
+ "VkPipeline",
+ "VkDescriptorSetLayout",
+ "VkSampler",
+ "VkDescriptorPool",
+ "VkDescriptorSet",
+ "VkRenderPass",
+ "VkFramebuffer",
+ "VkSwapchainKHR",
+ "VkSurfaceKHR",
+ "VkDebugReportCallbackEXT",
+ "VkDisplayKHR",
+ "VkDisplayModeKHR",
+]
+
+object_type_list = object_dispatch_list + object_non_dispatch_list
+
+headers = []
+objects = []
+protos = []
+for ext in extensions:
+ headers.extend(ext.headers)
+ objects.extend(ext.objects)
+ protos.extend(ext.protos)
+
+proto_names = [proto.name for proto in protos]
+
+headers_all = []
+objects_all = []
+protos_all = []
+for ext in extensions_all:
+ headers_all.extend(ext.headers)
+ objects_all.extend(ext.objects)
+ protos_all.extend(ext.protos)
+
+proto_all_names = [proto.name for proto in protos_all]