vulkan: Remove sdk-0.9 virtual branch, has been merged
Change-Id: I67e15c1d5fdd3364232051ab94e24e91a826c6a2
(cherry picked from commit e8faab3a100346438f43178e2c902642f57a0841)
diff --git a/vulkan/patches/README b/vulkan/patches/README
index 7e0376a..64ccf5d 100644
--- a/vulkan/patches/README
+++ b/vulkan/patches/README
@@ -17,11 +17,3 @@
activity's native library directory. The loader will search this
directory for layer libraries. Without this change, layers will only
be loaded from a global location under /data.
-
-
-sdk-0.9
--------
-This branch contains experimental support for the sdk-0.9. Changes to
-the core API up to version 0.170.2 are complete, but not tested much
-yet. These patches are probably missing changes to the swapchain
-extensions.
diff --git a/vulkan/patches/sdk-0.9/0001-vulkan-Update-from-header-0.138.2-to-0.170.2.patch b/vulkan/patches/sdk-0.9/0001-vulkan-Update-from-header-0.138.2-to-0.170.2.patch
deleted file mode 100644
index e88258d..0000000
--- a/vulkan/patches/sdk-0.9/0001-vulkan-Update-from-header-0.138.2-to-0.170.2.patch
+++ /dev/null
@@ -1,6298 +0,0 @@
-From dc816657910a33b838074dca34c4a2f5739f1b6f Mon Sep 17 00:00:00 2001
-From: Jesse Hall <jessehall@google.com>
-Date: Thu, 8 Oct 2015 14:00:22 -0700
-Subject: [PATCH] vulkan: Update from header 0.138.2 to 0.170.2
-
-Change-Id: I011e1f27d025730d448ee5cfefc6701300b455c2
----
- vulkan/api/platform.api | 6 -
- vulkan/api/templates/vk_xml.tmpl | 33 +-
- vulkan/api/templates/vulkan_common.tmpl | 2 +-
- vulkan/api/templates/vulkan_h.tmpl | 27 +-
- vulkan/api/vulkan.api | 1144 +++++++++++++------------------
- vulkan/include/hardware/hwvulkan.h | 3 +-
- vulkan/include/vulkan/vk_platform.h | 16 -
- vulkan/include/vulkan/vulkan.h | 924 ++++++++++++-------------
- vulkan/libvulkan/entry.cpp | 249 +++----
- vulkan/libvulkan/get_proc_addr.cpp | 190 ++---
- vulkan/libvulkan/loader.cpp | 85 +--
- vulkan/libvulkan/loader.h | 42 +-
- vulkan/libvulkan/swapchain.cpp | 44 +-
- vulkan/nulldrv/null_driver.cpp | 139 ++--
- vulkan/nulldrv/null_driver.h | 40 +-
- vulkan/nulldrv/null_driver_gen.cpp | 31 +-
- vulkan/tools/Android.mk | 1 +
- vulkan/tools/vkinfo.cpp | 82 ++-
- 18 files changed, 1338 insertions(+), 1720 deletions(-)
-
-diff --git a/vulkan/api/platform.api b/vulkan/api/platform.api
-index 3da6fed..23f649d 100644
---- a/vulkan/api/platform.api
-+++ b/vulkan/api/platform.api
-@@ -22,9 +22,3 @@
- // Platform types, as defined or included in vk_platform.h
-
- type u64 size_t
--
--type u64 VkDeviceSize
--type u32 VkBool32
--
--type u32 VkSampleMask
--type u32 VkFlags
-diff --git a/vulkan/api/templates/vk_xml.tmpl b/vulkan/api/templates/vk_xml.tmpl
-index c040938..893bde7 100644
---- a/vulkan/api/templates/vk_xml.tmpl
-+++ b/vulkan/api/templates/vk_xml.tmpl
-@@ -68,13 +68,18 @@ This file, vk.xml, is the Vulkan API Registry.»
- // the object handle as a bool in expressions like:
- // if (obj) vkDestroy(obj);
- #define VK_NONDISP_HANDLE_OPERATOR_BOOL() explicit operator bool() const { return handle != 0; }
-+ #define VK_NONDISP_HANDLE_CONSTRUCTOR_FROM_UINT64(obj) \
-+ explicit obj(uint64_t x) : handle(x) { } \
-+ obj(decltype(nullptr)) : handle(0) { }
- «#else»
- #define VK_NONDISP_HANDLE_OPERATOR_BOOL()
-+ #define VK_NONDISP_HANDLE_CONSTRUCTOR_FROM_UINT64(obj) \
-+ obj(uint64_t x) : handle(x) { }
- «#endif
- #define <name>VK_DEFINE_NONDISP_HANDLE</name>(obj) \»
- struct obj { \
- obj() { } \
-- obj(uint64_t x) { handle = x; } \
-+ VK_NONDISP_HANDLE_CONSTRUCTOR_FROM_UINT64(obj) \
- obj& operator =(uint64_t x) { handle = x; return *this; } \
- bool operator==(const obj& other) const { return handle == other.handle; } \
- bool operator!=(const obj& other) const { return handle != other.handle; } \
-@@ -87,6 +92,14 @@ This file, vk.xml, is the Vulkan API Registry.»
- #endif
- »»</type>
- ¶
-+ <type category="define">
-+#if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1800) || __cplusplus >= 201103L)
-+ »#define <name>VK_NULL_HANDLE</name> nullptr
-+«#else
-+ »#define VK_NULL_HANDLE 0
-+«#endif
-+ »»</type>
-+¶
- <type requires="vk_platform" name="VkDeviceSize"/>
- <type requires="vk_platform" name="VkSampleMask"/>
- <type requires="vk_platform" name="VkFlags"/>
-@@ -170,12 +183,13 @@ This file, vk.xml, is the Vulkan API Registry.»
- <enum value="{{$d.Expression}}" name="{{$d.Name}}"/>{{Macro "XML.Docs" $d.Docs}}
- {{end}}
- {{end}}
-- <enum value="MAX_FLOAT" name="VK_LOD_CLAMP_NONE"/>
-- <enum value="UINT32_MAX" name="VK_LAST_MIP_LEVEL"/>
-- <enum value="UINT32_MAX" name="VK_LAST_ARRAY_SLICE"/>
-- <enum value="UINT64_MAX" name="VK_WHOLE_SIZE"/>
-- <enum value="UINT32_MAX" name="VK_ATTACHMENT_UNUSED"/>
-- <enum value="UINT32_MAX" name="VK_QUEUE_FAMILY_IGNORED"/>
-+ <enum value="1000.0f" name="VK_LOD_CLAMP_NONE"/>
-+ <enum value="(-0U)" name="VK_REMAINING_MIP_LEVELS"/>
-+ <enum value="(~0U)" name="VK_REMAINING_ARRAY_LAYERS"/>
-+ <enum value="(_0ULL)" name="VK_WHOLE_SIZE"/>
-+ <enum value="(~0U)" name="VK_ATTACHMENT_UNUSED"/>
-+ <enum value="(~0U)" name="VK_QUEUE_FAMILY_IGNORED"/>
-+ <enum value="(~0U)" name="VK_SUBPASS_EXTERNAL"/>
- «</enums>
- ¶
- <!-- Unlike OpenGL, most tokens in Vulkan are actual typed enumerants in»
-@@ -217,13 +231,12 @@ This file, vk.xml, is the Vulkan API Registry.»
- «</require>
- <require comment="API constants">»
- <enum name="VK_LOD_CLAMP_NONE"/>
-- <enum name="VK_LAST_MIP_LEVEL"/>
-- <enum name="VK_LAST_ARRAY_SLICE"/>
-+ <enum name="VK_REMAINING_MIP_LEVELS"/>
-+ <enum name="VK_REMAINING_ARRAY_LAYERS"/>
- <enum name="VK_WHOLE_SIZE"/>
- <enum name="VK_ATTACHMENT_UNUSED"/>
- <enum name="VK_TRUE"/>
- <enum name="VK_FALSE"/>
-- <enum name="VK_NULL_HANDLE"/>
- «</require>
- <require comment="All functions (TODO: split by type)">»
- {{range $f := AllCommands $}}
-diff --git a/vulkan/api/templates/vulkan_common.tmpl b/vulkan/api/templates/vulkan_common.tmpl
-index 135c835..12d5788 100644
---- a/vulkan/api/templates/vulkan_common.tmpl
-+++ b/vulkan/api/templates/vulkan_common.tmpl
-@@ -137,7 +137,7 @@
- {{define "Parameter"}}
- {{AssertType $ "Parameter"}}
-
-- {{Macro "ParameterType" $}} {{$.Name}}{{Macro "ArrayPostfix" $}}
-+ {{if GetAnnotation $ "readonly"}}const {{end}}{{Macro "ParameterType" $}} {{$.Name}}{{Macro "ArrayPostfix" $}}
- {{end}}
-
-
-diff --git a/vulkan/api/templates/vulkan_h.tmpl b/vulkan/api/templates/vulkan_h.tmpl
-index 6747147..2dee541 100644
---- a/vulkan/api/templates/vulkan_h.tmpl
-+++ b/vulkan/api/templates/vulkan_h.tmpl
-@@ -53,10 +53,16 @@ extern "C" {
- #define VK_API_VERSION \
- VK_MAKE_VERSION({{Global "VERSION_MAJOR"}}, {{Global "VERSION_MINOR"}}, {{Global "VERSION_PATCH"}})
- ¶
-+#if defined(__cplusplus) && (_MSC_VER >= 1800 || __cplusplus >= 201103L)
-+ #define VK_NULL_HANDLE nullptr
-+#else
-+ #define VK_NULL_HANDLE 0
-+#endif
-+¶
- #define VK_DEFINE_HANDLE(obj) typedef struct obj##_T* obj;
- ¶
- #if defined(__cplusplus)
--#if (_MSC_VER >= 1800 || __cplusplus >= 201103L)
-+#if ((defined(_MSC_VER) && _MSC_VER >= 1800 || __cplusplus >= 201103L)
- // The bool operator only works if there are no implicit conversions from an obj to
- // a bool-compatible type, which can then be used to unintentionally violate type safety.
- // C++11 and above supports the "explicit" keyword on conversion operators to stop this
-@@ -65,13 +71,18 @@ extern "C" {
- // if (obj) vkDestroy(obj);
- #define VK_NONDISP_HANDLE_OPERATOR_BOOL() \
- explicit operator bool() const { return handle != 0; }
-+#define VK_NONDISP_HANDLE_CONSTRUCTOR_FROM_UINT64(obj) \
-+ explicit obj(uint64_t x) : handle(x) { } \
-+ obj(decltype(nullptr)) : handle(0) { }
- #else
- #define VK_NONDISP_HANDLE_OPERATOR_BOOL()
-+#define VK_NONDISP_HANDLE_CONSTRUCTOR_FROM_UINT64(obj) \
-+ obj(uint64_t x) : handle(x) { }
- #endif
- #define VK_DEFINE_NONDISP_HANDLE(obj) \
- struct obj { \
- obj() : handle(0) { } \
-- obj(uint64_t x) : handle(x) { } \
-+ VK_NONDISP_HANDLE_CONSTRUCTOR_FROM_UINT64(obj) \
- obj& operator=(uint64_t x) { \
- handle = x; \
- return *this; \
-@@ -87,11 +98,13 @@ extern "C" {
- typedef struct obj##_T { uint64_t handle; } obj;
- #endif
- ¶
--#define VK_LOD_CLAMP_NONE MAX_FLOAT
--#define VK_LAST_MIP_LEVEL UINT32_MAX
--#define VK_LAST_ARRAY_SLICE UINT32_MAX
--#define VK_WHOLE_SIZE UINT64_MAX
--#define VK_ATTACHMENT_UNUSED UINT32_MAX
-+#define VK_LOD_CLAMP_NONE 1000.0f
-+#define VK_REMAINING_MIP_LEVELS (~0U)
-+#define VK_REMAINING_ARRAY_LAYERS (~0U)
-+#define VK_WHOLE_SIZE (~0ULL)
-+#define VK_ATTACHMENT_UNUSED (~0U)
-+define VK_QUEUE_FAMILY_IGNORED (~0U)
-+define VK_SUBPASS_EXTERNAL (~0U)
- {{range $d := $.Definitions}}
- {{if HasPrefix $d.Name "VK_"}}#define {{$d.Name}} {{$d.Expression}}{{end}}
- {{end}}
-diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
-index c014454..9ea1ee4 100644
---- a/vulkan/api/vulkan.api
-+++ b/vulkan/api/vulkan.api
-@@ -27,7 +27,7 @@ import platform "platform.api"
-
- // API version (major.minor.patch)
- define VERSION_MAJOR 0
--define VERSION_MINOR 138
-+define VERSION_MINOR 170
- define VERSION_PATCH 2
-
- // API limits
-@@ -41,13 +41,20 @@ define VK_MAX_MEMORY_HEAPS 16 /// The maximum number of unique memory
- // API keywords
- define VK_TRUE 1
- define VK_FALSE 0
--define VK_NULL_HANDLE 0
-+
-+// API keyword, but needs special handling by some templates
-+define NULL_HANDLE 0
-
-
- /////////////
- // Types //
- /////////////
-
-+type u32 VkBool32
-+type u32 VkFlags
-+type u64 VkDeviceSize
-+type u32 VkSampleMask
-+
- /// Dispatchable handle types.
- @dispatchHandle type u64 VkInstance
- @dispatchHandle type u64 VkPhysicalDevice
-@@ -62,7 +69,6 @@ define VK_NULL_HANDLE 0
- @nonDispatchHandle type u64 VkBufferView
- @nonDispatchHandle type u64 VkImage
- @nonDispatchHandle type u64 VkImageView
--@nonDispatchHandle type u64 VkAttachmentView
- @nonDispatchHandle type u64 VkShaderModule
- @nonDispatchHandle type u64 VkShader
- @nonDispatchHandle type u64 VkPipeline
-@@ -71,10 +77,6 @@ define VK_NULL_HANDLE 0
- @nonDispatchHandle type u64 VkDescriptorSet
- @nonDispatchHandle type u64 VkDescriptorSetLayout
- @nonDispatchHandle type u64 VkDescriptorPool
--@nonDispatchHandle type u64 VkDynamicViewportState
--@nonDispatchHandle type u64 VkDynamicRasterState
--@nonDispatchHandle type u64 VkDynamicColorBlendState
--@nonDispatchHandle type u64 VkDynamicDepthStencilState
- @nonDispatchHandle type u64 VkFence
- @nonDispatchHandle type u64 VkSemaphore
- @nonDispatchHandle type u64 VkEvent
-@@ -97,6 +99,7 @@ enum VkImageLayout {
- VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 0x00000005, /// Optimal layout when image is used for read only shader access
- VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL = 0x00000006, /// Optimal layout when image is used only as source of transfer operations
- VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL = 0x00000007, /// Optimal layout when image is used only as destination of transfer operations
-+ VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU
- }
-
- enum VkAttachmentLoadOp {
-@@ -138,11 +141,6 @@ enum VkImageAspect {
- VK_IMAGE_ASPECT_METADATA = 0x00000003,
- }
-
--enum VkBufferViewType {
-- VK_BUFFER_VIEW_TYPE_RAW = 0x00000000, /// Raw buffer without special structure (UBO, SSBO)
-- VK_BUFFER_VIEW_TYPE_FORMATTED = 0x00000001, /// Buffer with format (TBO, IBO)
--}
--
- enum VkCmdBufferLevel {
- VK_CMD_BUFFER_LEVEL_PRIMARY = 0x00000000,
- VK_CMD_BUFFER_LEVEL_SECONDARY = 0x00000001,
-@@ -240,12 +238,12 @@ enum VkTexMipmapMode {
- VK_TEX_MIPMAP_MODE_LINEAR = 0x00000002, /// Linear filter between mip levels
- }
-
--enum VkTexAddress {
-- VK_TEX_ADDRESS_WRAP = 0x00000000,
-- VK_TEX_ADDRESS_MIRROR = 0x00000001,
-- VK_TEX_ADDRESS_CLAMP = 0x00000002,
-- VK_TEX_ADDRESS_MIRROR_ONCE = 0x00000003,
-- VK_TEX_ADDRESS_CLAMP_BORDER = 0x00000004,
-+enum VkTexAddressMode {
-+ VK_TEX_ADDRESS_MODE_WRAP = 0x00000000,
-+ VK_TEX_ADDRESS_MODE_MIRROR = 0x00000001,
-+ VK_TEX_ADDRESS_MODE_CLAMP = 0x00000002,
-+ VK_TEX_ADDRESS_MODE_MIRROR_ONCE = 0x00000003,
-+ VK_TEX_ADDRESS_MODE_CLAMP_BORDER = 0x00000004,
- }
-
- enum VkCompareOp {
-@@ -450,7 +448,7 @@ enum VkFormat {
- VK_FORMAT_R11G11B10_UFLOAT = 0x00000057,
- VK_FORMAT_R9G9B9E5_UFLOAT = 0x00000058,
- VK_FORMAT_D16_UNORM = 0x00000059,
-- VK_FORMAT_D24_UNORM = 0x0000005A,
-+ VK_FORMAT_D24_UNORM_X8 = 0x0000005A,
- VK_FORMAT_D32_SFLOAT = 0x0000005B,
- VK_FORMAT_S8_UINT = 0x0000005C,
- VK_FORMAT_D16_UNORM_S8_UINT = 0x0000005D,
-@@ -552,52 +550,49 @@ enum VkStructureType {
- VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 1,
- VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO = 2,
- VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 3,
-- VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO = 4,
-- VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 5,
-- VK_STRUCTURE_TYPE_SHADER_CREATE_INFO = 6,
-- VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 7,
-- VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 8,
-- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 9,
-- VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO = 10,
-- VK_STRUCTURE_TYPE_DYNAMIC_RASTER_STATE_CREATE_INFO = 11,
-- VK_STRUCTURE_TYPE_DYNAMIC_COLOR_BLEND_STATE_CREATE_INFO = 12,
-- VK_STRUCTURE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE_CREATE_INFO = 13,
-- VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO = 14,
-- VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 15,
-- VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 16,
-- VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 17,
-- VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 18,
-- VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 19,
-- VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 20,
-- VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 21,
-- VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 22,
-- VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 23,
-- VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 24,
-- VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO = 25,
-- VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 26,
-- VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 27,
-- VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 28,
-- VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 29,
-- VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 30,
-- VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 31,
-- VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 32,
-- VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO = 33,
-- VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 34,
-- VK_STRUCTURE_TYPE_MEMORY_BARRIER = 35,
-- VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 36,
-- VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 37,
-- VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 38,
-- VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 39,
-- VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 40,
-- VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 41,
-- VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 42,
-- VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 43,
-- VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 44,
-- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION = 45,
-- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION = 46,
-- VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY = 47,
-- VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 48,
-- VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO = 49,
-+ VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 4,
-+ VK_STRUCTURE_TYPE_SHADER_CREATE_INFO = 5,
-+ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 6,
-+ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 7,
-+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 8,
-+ VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO = 9,
-+ VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
-+ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 11,
-+ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 12,
-+ VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 13,
-+ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 14,
-+ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 15,
-+ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 16,
-+ VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 17,
-+ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 18,
-+ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 19,
-+ VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO = 20,
-+ VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 21,
-+ VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 22,
-+ VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 23,
-+ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 24,
-+ VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 25,
-+ VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 26,
-+ VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 27,
-+ VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO = 28,
-+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 29,
-+ VK_STRUCTURE_TYPE_MEMORY_BARRIER = 30,
-+ VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 31,
-+ VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 32,
-+ VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
-+ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 34,
-+ VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 35,
-+ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 36,
-+ VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 37,
-+ VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 38,
-+ VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 39,
-+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION = 40,
-+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION = 41,
-+ VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY = 42,
-+ VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
-+ VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO = 44,
-+ VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 45,
-+ VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 46,
- }
-
- enum VkRenderPassContents {
-@@ -605,7 +600,7 @@ enum VkRenderPassContents {
- VK_RENDER_PASS_CONTENTS_SECONDARY_CMD_BUFFERS = 0x00000001,
- }
-
--@lastUnused(-33)
-+@lastUnused(-8)
- /// Error and return codes
- enum VkResult {
- // Return codes for successful operation execution (positive values)
-@@ -618,38 +613,26 @@ enum VkResult {
- VK_INCOMPLETE = 0x00000006,
-
- // Error codes (negative values)
-- VK_ERROR_UNKNOWN = 0xFFFFFFFF,
-- VK_ERROR_UNAVAILABLE = 0xFFFFFFFE,
-+ VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFF,
-+ VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFE,
- VK_ERROR_INITIALIZATION_FAILED = 0xFFFFFFFD,
-- VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFC,
-- VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFB,
-- VK_ERROR_DEVICE_ALREADY_CREATED = 0xFFFFFFFA,
-- VK_ERROR_DEVICE_LOST = 0xFFFFFFF9,
-- VK_ERROR_INVALID_POINTER = 0xFFFFFFF8,
-- VK_ERROR_INVALID_VALUE = 0xFFFFFFF7,
-- VK_ERROR_INVALID_HANDLE = 0xFFFFFFF6,
-- VK_ERROR_INVALID_ORDINAL = 0xFFFFFFF5,
-- VK_ERROR_INVALID_MEMORY_SIZE = 0xFFFFFFF4,
-- VK_ERROR_INVALID_EXTENSION = 0xFFFFFFF3,
-- VK_ERROR_INVALID_FLAGS = 0xFFFFFFF2,
-- VK_ERROR_INVALID_ALIGNMENT = 0xFFFFFFF1,
-- VK_ERROR_INVALID_FORMAT = 0xFFFFFFF0,
-- VK_ERROR_INVALID_IMAGE = 0xFFFFFFEF,
-- VK_ERROR_INVALID_DESCRIPTOR_SET_DATA = 0xFFFFFFEE,
-- VK_ERROR_INVALID_QUEUE_TYPE = 0xFFFFFFED,
-- VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION = 0xFFFFFFEC,
-- VK_ERROR_BAD_SHADER_CODE = 0xFFFFFFEB,
-- VK_ERROR_BAD_PIPELINE_DATA = 0xFFFFFFEA,
-- VK_ERROR_NOT_MAPPABLE = 0xFFFFFFE9,
-- VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFE8,
-- VK_ERROR_MEMORY_UNMAP_FAILED = 0xFFFFFFE7,
-- VK_ERROR_INCOMPATIBLE_DEVICE = 0xFFFFFFE6,
-- VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFE5,
-- VK_ERROR_INCOMPLETE_COMMAND_BUFFER = 0xFFFFFFE4,
-- VK_ERROR_BUILDING_COMMAND_BUFFER = 0xFFFFFFE3,
-- VK_ERROR_MEMORY_NOT_BOUND = 0xFFFFFFE2,
-- VK_ERROR_INCOMPATIBLE_QUEUE = 0xFFFFFFE1,
-- VK_ERROR_INVALID_LAYER = 0xFFFFFFE0,
-+ VK_ERROR_DEVICE_LOST = 0xFFFFFFFC,
-+ VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFFB,
-+ VK_ERROR_LAYER_NOT_PRESENT = 0xFFFFFFFA,
-+ VK_ERROR_EXTENSION_NOT_PRESENT = 0xFFFFFFF9,
-+ VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFF8,
-+}
-+
-+enum VkDynamicState {
-+ VK_DYNAMIC_STATE_VIEWPORT = 0x00000000,
-+ VK_DYNAMIC_STATE_SCISSOR = 0x00000001,
-+ VK_DYNAMIC_STATE_LINE_WIDTH = 0x00000002,
-+ VK_DYNAMIC_STATE_DEPTH_BIAS = 0x00000003,
-+ VK_DYNAMIC_STATE_BLEND_CONSTANTS = 0x00000004,
-+ VK_DYNAMIC_STATE_DEPTH_BOUNDS = 0x00000005,
-+ VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 0x00000006,
-+ VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 0x00000007,
-+ VK_DYNAMIC_STATE_STENCIL_REFERENCE = 0x00000008,
- }
-
-
-@@ -657,11 +640,6 @@ enum VkResult {
- // Bitfields //
- /////////////////
-
--/// Device creation flags
--bitfield VkDeviceCreateFlags {
-- VK_DEVICE_CREATE_VALIDATION_BIT = 0x00000001,
--}
--
- /// Queue capabilities
- bitfield VkQueueFlags {
- VK_QUEUE_GRAPHICS_BIT = 0x00000001, /// Queue supports graphics operations
-@@ -684,7 +662,7 @@ bitfield VkMemoryPropertyFlags {
-
- /// Memory heap flags
- bitfield VkMemoryHeapFlags {
-- VK_MEMORY_HEAP_HOST_LOCAL = 0x00000001, /// If set, heap represents host memory
-+ VK_MEMORY_HEAP_HOST_LOCAL_BIT = 0x00000001, /// If set, heap represents host memory
- }
-
- /// Memory output flags passed to resource transition commands
-@@ -712,7 +690,6 @@ bitfield VkMemoryInputFlags {
-
- /// Buffer usage flags
- bitfield VkBufferUsageFlags {
-- VK_BUFFER_USAGE_GENERAL = 0x00000000, /// No special usage
- VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT = 0x00000001, /// Can be used as a source of transfer operations
- VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT = 0x00000002, /// Can be used as a destination of transfer operations
- VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, /// Can be used as TBO
-@@ -726,7 +703,7 @@ bitfield VkBufferUsageFlags {
-
- /// Buffer creation flags
- bitfield VkBufferCreateFlags {
-- VK_BUFFER_CREATE_SPARSE_BIT = 0x00000001, /// Buffer should support sparse backing
-+ VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Buffer should support sparse backing
- VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency
- VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers
- }
-@@ -745,31 +722,29 @@ bitfield VkShaderStageFlags {
-
- /// Image usage flags
- bitfield VkImageUsageFlags {
-- VK_IMAGE_USAGE_GENERAL = 0x00000000, /// No special usage
- VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT = 0x00000001, /// Can be used as a source of transfer operations
- VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT = 0x00000002, /// Can be used as a destination of transfer operations
- VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
- VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, /// Can be used as storage image (STORAGE_IMAGE descriptor type)
- VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, /// Can be used as framebuffer color attachment
-- VK_IMAGE_USAGE_DEPTH_STENCIL_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment
-+ VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment
- VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, /// Image data not needed outside of rendering
- VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, /// Can be used as framebuffer input attachment
- }
-
- /// Image creation flags
- bitfield VkImageCreateFlags {
-- VK_IMAGE_CREATE_SPARSE_BIT = 0x00000001, /// Image should support sparse backing
-+ VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Image should support sparse backing
- VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Image should support sparse backing with partial residency
- VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Image should support constent data access to physical memory blocks mapped into multiple locations of sparse images
-- VK_IMAGE_CREATE_INVARIANT_DATA_BIT = 0x00000008,
-- VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000010, /// Allows image views to have different format than the base image
-- VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000020, /// Allows creating image views with cube type from the created image
-+ VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image
-+ VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010, /// Allows creating image views with cube type from the created image
- }
-
- /// Framebuffer attachment view creation flags
--bitfield VkAttachmentViewCreateFlags {
-- VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_DEPTH_BIT = 0x00000001,
-- VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_STENCIL_BIT = 0x00000002,
-+bitfield VkImageViewCreateFlags {
-+ VK_IMAGE_VIEW_CREATE_READ_ONLY_DEPTH_BIT = 0x00000001,
-+ VK_IMAGE_VIEW_CREATE_READ_ONLY_STENCIL_BIT = 0x00000002,
- }
-
- /// Pipeline creation flags
-@@ -808,7 +783,8 @@ bitfield VkFormatFeatureFlags {
- VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, /// Format can be used for color attachment images
- VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, /// Format supports blending in case it's used for color attachment images
- VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, /// Format can be used for depth/stencil attachment images
-- VK_FORMAT_FEATURE_CONVERSION_BIT = 0x00000400, /// Format can be used as the source or destination of format converting blits
-+ VK_FORMAT_FEATURE_BLIT_SOURCE_BIT = 0x00000400, /// Format can be used as the source image of blits with vkCmdBlitImage
-+ VK_FORMAT_FEATURE_BLIT_DESTINATION_BIT = 0x00000800, /// Format can be used as the destination image of blits with vkCmdBlitImage
- }
-
- /// Query control flags
-@@ -904,11 +880,15 @@ bitfield VkPipelineStageFlags {
- VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, /// Color attachment writes
- VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, /// Compute shading
- VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, /// Transfer/copy operations
-- VK_PIPELINE_STAGE_TRANSITION_BIT = 0x00002000, /// Resource transition commands
-- VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, /// Indicates host (CPU) is a source/sink of the dependency
-+ VK_PIPELINE_STAGE_HOST_BIT = 0x00002000, /// Indicates host (CPU) is a source/sink of the dependency
-
- VK_PIPELINE_STAGE_ALL_GRAPHICS = 0x000007FF, /// All stages of the graphics pipeline
-- VK_PIPELINE_STAGE_ALL_GPU_COMMANDS = 0x00003FFF, /// All graphics, compute, copy, and transition commands
-+ VK_PIPELINE_STAGE_ALL_GPU_COMMANDS = 0x00001FFF, /// All graphics, compute, copy, and transition commands
-+}
-+
-+/// Render pass attachment description flags
-+bitfield VkAttachmentDescriptionFlags {
-+ VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001, /// The attachment may alias physical memory of another attachment in the same renderpass
- }
-
- /// Subpass description flags
-@@ -924,11 +904,27 @@ bitfield VkCmdPoolCreateFlags {
-
- /// Command pool reset flags
- bitfield VkCmdPoolResetFlags {
-- VK_CMD_POOL_RESET_RELEASE_RESOURCES = 0x00000001, /// Release resources owned by the pool
-+ VK_CMD_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the pool
- }
-
- bitfield VkCmdBufferResetFlags {
-- VK_CMD_BUFFER_RESET_RELEASE_RESOURCES = 0x00000001, /// Release resources owned by the buffer
-+ VK_CMD_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the buffer
-+}
-+
-+bitfield VkSampleCountFlags {
-+ VK_SAMPLE_COUNT_1_BIT = 0x00000001,
-+ VK_SAMPLE_COUNT_2_BIT = 0x00000002,
-+ VK_SAMPLE_COUNT_4_BIT = 0x00000004,
-+ VK_SAMPLE_COUNT_8_BIT = 0x00000008,
-+ VK_SAMPLE_COUNT_16_BIT = 0x00000010,
-+ VK_SAMPLE_COUNT_32_BIT = 0x00000020,
-+ VK_SAMPLE_COUNT_64_BIT = 0x00000040,
-+}
-+
-+bitfield VkStencilFaceFlags {
-+ VK_STENCIL_FACE_NONE = 0x00000000, /// No faces
-+ VK_STENCIL_FACE_FRONT_BIT = 0x00000001, /// Front face
-+ VK_STENCIL_FACE_BACK_BIT = 0x00000002, /// Back face
- }
-
-
-@@ -992,6 +988,8 @@ class VkPhysicalDeviceProperties {
- VkPhysicalDeviceType deviceType
- char[VK_MAX_PHYSICAL_DEVICE_NAME] deviceName
- u8[VK_UUID_LENGTH] pipelineCacheUUID
-+ VkPhysicalDeviceLimits limits
-+ VkPhysicalDeviceSparseProperties sparseProperties
- }
-
- class VkExtensionProperties {
-@@ -1023,6 +1021,8 @@ class VkAllocCallbacks {
- }
-
- class VkDeviceQueueCreateInfo {
-+ VkStructureType sStype /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
-+ const void* pNext /// Pointer to next structure
- u32 queueFamilyIndex
- u32 queueCount
- }
-@@ -1037,7 +1037,6 @@ class VkDeviceCreateInfo {
- u32 extensionCount
- const char* const* ppEnabledExtensionNames
- const VkPhysicalDeviceFeatures* pEnabledFeatures
-- VkDeviceCreateFlags flags /// Device creation flags
- }
-
- class VkInstanceCreateInfo {
-@@ -1051,10 +1050,10 @@ class VkInstanceCreateInfo {
- const char* const* ppEnabledExtensionNames /// Extension names to be enabled
- }
-
--class VkPhysicalDeviceQueueProperties {
-+class VkQueueFamilyProperties {
- VkQueueFlags queueFlags /// Queue flags
- u32 queueCount
-- platform.VkBool32 supportsTimestamps
-+ VkBool32 supportsTimestamps
- }
-
- class VkPhysicalDeviceMemoryProperties {
-@@ -1067,13 +1066,13 @@ class VkPhysicalDeviceMemoryProperties {
- class VkMemoryAllocInfo {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO
- const void* pNext /// Pointer to next structure
-- platform.VkDeviceSize allocationSize /// Size of memory allocation
-+ VkDeviceSize allocationSize /// Size of memory allocation
- u32 memoryTypeIndex /// Index of the of the memory type to allocate from
- }
-
- class VkMemoryRequirements {
-- platform.VkDeviceSize size /// Specified in bytes
-- platform.VkDeviceSize alignment /// Specified in bytes
-+ VkDeviceSize size /// Specified in bytes
-+ VkDeviceSize alignment /// Specified in bytes
- u32 memoryTypeBits /// Bitfield of the allowed memory type indices into memoryTypes[] for this object
- }
-
-@@ -1086,9 +1085,9 @@ class VkSparseImageFormatProperties {
- class VkSparseImageMemoryRequirements {
- VkSparseImageFormatProperties formatProps
- u32 imageMipTailStartLOD
-- platform.VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment
-- platform.VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment
-- platform.VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment
-+ VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment
-+ VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment
-+ VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment
- }
-
- class VkMemoryType {
-@@ -1097,7 +1096,7 @@ class VkMemoryType {
- }
-
- class VkMemoryHeap {
-- platform.VkDeviceSize size /// Available memory in the heap
-+ VkDeviceSize size /// Available memory in the heap
- VkMemoryHeapFlags flags /// Flags for the heap
- }
-
-@@ -1105,26 +1104,36 @@ class VkMappedMemoryRange {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
- const void* pNext /// Pointer to next structure
- VkDeviceMemory mem /// Mapped memory object
-- platform.VkDeviceSize offset /// Offset within the mapped memory the range starts from
-- platform.VkDeviceSize size /// Size of the range within the mapped memory
-+ VkDeviceSize offset /// Offset within the mapped memory the range starts from
-+ VkDeviceSize size /// Size of the range within the mapped memory
- }
-
- class VkFormatProperties {
- VkFormatFeatureFlags linearTilingFeatures /// Format features in case of linear tiling
- VkFormatFeatureFlags optimalTilingFeatures /// Format features in case of optimal tiling
-+ VkFormatFeatureFlags bufferFeatures /// Format features supported by buffers
- }
-
- class VkImageFormatProperties {
-- u64 maxResourceSize /// max size (in bytes) of this resource type
-- u32 maxSamples /// max sample count for this resource type
-+ VkExtent3D maxExtent /// max image dimensions for this resource type
-+ u32 maxMipLevels /// max number of mipmap levels for this resource type
-+ u32 maxArraySize /// max array size for this resource type
-+ VkSampleCountFlags sampleCounts /// supported sample counts for this resource type
-+ VkDeviceSize maxResourceSize /// max size (in bytes) of this resource type
-+}
-+
-+class VkDescriptorBufferInfo {
-+ VkBuffer buffer /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC]
-+ VkDeviceSize offset /// Base offset from buffer start in bytes to update in the descriptor set.
-+ VkDeviceSize range /// Size in bytes of the buffer resource for this descriptor update.
- }
-
- class VkDescriptorInfo {
- VkBufferView bufferView /// Buffer view to write to the descriptor (in case it's a buffer descriptor, otherwise should be VK_NULL_HANDLE)
- VkSampler sampler /// Sampler to write to the descriptor (in case it's a SAMPLER or COMBINED_IMAGE_SAMPLER descriptor, otherwise should be VK_NULL_HANDLE)
-- VkImageView imageView /// Image view to write to the descriptor (in case it's a SAMPLED_IMAGE, STORAGE_IMAGE, or COMBINED_IMAGE_SAMPLER descriptor, otherwise should be VK_NULL_HANDLE)
-- VkAttachmentView attachmentView /// Input attachment view to write to the descriptor (in case it's a INPUT_ATTACHMENT descriptor, otherwise should be VK_NULL_HANDLE)
-- VkImageLayout imageLayout /// Layout the image is expected to be in when accessed using this descriptor (only used if imageView or attachmentView is not VK_NULL_HANDLE)
-+ VkImageView imageView /// Image view to write to the descriptor (in case it's a SAMPLED_IMAGE, STORAGE_IMAGE, COMBINED_IMAGE_SAMPLER, or INPUT_ATTACHMENT descriptor, otherwise should be VK_NULL_HANDLE)
-+ VkImageLayout imageLayout /// Layout the image is expected to be in when accessed using this descriptor (only used if imageView is not VK_NULL_HANDLE)
-+ VkDescriptorBufferInfo bufferInfo /// Raw buffer, size and offset for UNIFORM_BUFFER[_DYNAMIC] or STORAGE_BUFFER[_DYNAMIC] descriptor types. Ignored otherwise.
- }
-
- class VkWriteDescriptorSet {
-@@ -1153,7 +1162,7 @@ class VkCopyDescriptorSet {
- class VkBufferCreateInfo {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
- const void* pNext /// Pointer to next structure.
-- platform.VkDeviceSize size /// Specified in bytes
-+ VkDeviceSize size /// Specified in bytes
- VkBufferUsageFlags usage /// Buffer usage flags
- VkBufferCreateFlags flags /// Buffer creation flags
- VkSharingMode sharingMode
-@@ -1165,23 +1174,22 @@ class VkBufferViewCreateInfo {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
- const void* pNext /// Pointer to next structure.
- VkBuffer buffer
-- VkBufferViewType viewType
- VkFormat format /// Optionally specifies format of elements
-- platform.VkDeviceSize offset /// Specified in bytes
-- platform.VkDeviceSize range /// View size specified in bytes
-+ VkDeviceSize offset /// Specified in bytes
-+ VkDeviceSize range /// View size specified in bytes
- }
-
- class VkImageSubresource {
- VkImageAspect aspect
- u32 mipLevel
-- u32 arraySlice
-+ u32 arrayLayer
- }
-
- class VkImageSubresourceRange {
-- VkImageAspect aspect
-+ VkImageAspectFlags aspectMask
- u32 baseMipLevel
- u32 mipLevels
-- u32 baseArraySlice
-+ u32 baseArrayLayer
- u32 arraySize
- }
-
-@@ -1200,8 +1208,8 @@ class VkBufferMemoryBarrier {
- u32 srcQueueFamilyIndex /// Queue family to transition ownership from
- u32 destQueueFamilyIndex /// Queue family to transition ownership to
- VkBuffer buffer /// Buffer to sync
-- platform.VkDeviceSize offset /// Offset within the buffer to sync
-- platform.VkDeviceSize size /// Amount of bytes to sync
-+ VkDeviceSize offset /// Offset within the buffer to sync
-+ VkDeviceSize size /// Amount of bytes to sync
- }
-
- class VkImageMemoryBarrier {
-@@ -1232,13 +1240,14 @@ class VkImageCreateInfo {
- VkSharingMode sharingMode /// Cross-queue-family sharing mode
- u32 queueFamilyCount /// Number of queue families to share across
- const u32* pQueueFamilyIndices /// Array of queue family indices to share across
-+ VkImageLayout initialLayout /// Initial image layout for all subresources
- }
-
- class VkSubresourceLayout {
-- platform.VkDeviceSize offset /// Specified in bytes
-- platform.VkDeviceSize size /// Specified in bytes
-- platform.VkDeviceSize rowPitch /// Specified in bytes
-- platform.VkDeviceSize depthPitch /// Specified in bytes
-+ VkDeviceSize offset /// Specified in bytes
-+ VkDeviceSize size /// Specified in bytes
-+ VkDeviceSize rowPitch /// Specified in bytes
-+ VkDeviceSize depthPitch /// Specified in bytes
- }
-
- class VkImageViewCreateInfo {
-@@ -1249,34 +1258,19 @@ class VkImageViewCreateInfo {
- VkFormat format
- VkChannelMapping channels
- VkImageSubresourceRange subresourceRange
--}
--
--class VkAttachmentViewCreateInfo {
-- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO
-- const void* pNext /// Pointer to next structure
-- VkImage image
-- VkFormat format
-- u32 mipLevel
-- u32 baseArraySlice
-- u32 arraySize
-- VkAttachmentViewCreateFlags flags /// Framebuffer attachment view flags
--}
--
--class VkAttachmentBindInfo {
-- VkAttachmentView view
-- VkImageLayout layout
-+ VkImageViewCreateFlags flags
- }
-
- class VkBufferCopy {
-- platform.VkDeviceSize srcOffset /// Specified in bytes
-- platform.VkDeviceSize destOffset /// Specified in bytes
-- platform.VkDeviceSize copySize /// Specified in bytes
-+ VkDeviceSize srcOffset /// Specified in bytes
-+ VkDeviceSize destOffset /// Specified in bytes
-+ VkDeviceSize copySize /// Specified in bytes
- }
-
- class VkSparseMemoryBindInfo {
-- platform.VkDeviceSize rangeOffset /// Specified in bytes
-- platform.VkDeviceSize rangeSize /// Specified in bytes
-- platform.VkDeviceSize memOffset /// Specified in bytes
-+ VkDeviceSize rangeOffset /// Specified in bytes
-+ VkDeviceSize rangeSize /// Specified in bytes
-+ VkDeviceSize memOffset /// Specified in bytes
- VkDeviceMemory mem
- VkSparseMemoryBindFlags flags
- }
-@@ -1285,41 +1279,48 @@ class VkSparseImageMemoryBindInfo {
- VkImageSubresource subresource
- VkOffset3D offset
- VkExtent3D extent
-- platform.VkDeviceSize memOffset /// Specified in bytes
-+ VkDeviceSize memOffset /// Specified in bytes
- VkDeviceMemory mem
- VkSparseMemoryBindFlags flags
- }
-
-+class VkImageSubresourceCopy {
-+ VkImageAspect aspect
-+ u32 mipLevel
-+ u32 arrayLayer
-+ u32 arraySize
-+}
-+
- class VkImageCopy {
-- VkImageSubresource srcSubresource
-+ VkImageSubresourceCopy srcSubresource
- VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images
-- VkImageSubresource destSubresource
-+ VkImageSubresourceCopy destSubresource
- VkOffset3D destOffset /// Specified in pixels for both compressed and uncompressed images
- VkExtent3D extent /// Specified in pixels for both compressed and uncompressed images
- }
-
- class VkImageBlit {
-- VkImageSubresource srcSubresource
-+ VkImageSubresourceCopy srcSubresource
- VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images
- VkExtent3D srcExtent /// Specified in pixels for both compressed and uncompressed images
-- VkImageSubresource destSubresource
-+ VkImageSubresourceCopy destSubresource
- VkOffset3D destOffset /// Specified in pixels for both compressed and uncompressed images
- VkExtent3D destExtent /// Specified in pixels for both compressed and uncompressed images
- }
-
- class VkBufferImageCopy {
-- platform.VkDeviceSize bufferOffset /// Specified in bytes
-+ VkDeviceSize bufferOffset /// Specified in bytes
- u32 bufferRowLength /// Specified in texels
- u32 bufferImageHeight
-- VkImageSubresource imageSubresource
-+ VkImageSubresourceCopy imageSubresource
- VkOffset3D imageOffset /// Specified in pixels for both compressed and uncompressed images
- VkExtent3D imageExtent /// Specified in pixels for both compressed and uncompressed images
- }
-
- class VkImageResolve {
-- VkImageSubresource srcSubresource
-+ VkImageSubresourceCopy srcSubresource
- VkOffset3D srcOffset
-- VkImageSubresource destSubresource
-+ VkImageSubresourceCopy destSubresource
- VkOffset3D destOffset
- VkExtent3D extent
- }
-@@ -1338,6 +1339,7 @@ class VkShaderCreateInfo {
- VkShaderModule module /// Module containing entry point
- const char* pName /// Null-terminated entry point name
- VkShaderCreateFlags flags /// Reserved
-+ VkShaderStage stage
- }
-
- class VkDescriptorSetLayoutBinding {
-@@ -1362,6 +1364,8 @@ class VkDescriptorTypeCount {
- class VkDescriptorPoolCreateInfo {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
- const void* pNext /// Pointer to next structure
-+ VkDescriptorPoolUsage poolUsage
-+ u32 maxSets
- u32 count
- const VkDescriptorTypeCount* pTypeCount
- }
-@@ -1390,7 +1394,7 @@ class VkPipelineShaderStageCreateInfo {
- class VkComputePipelineCreateInfo {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
- const void* pNext /// Pointer to next structure
-- VkPipelineShaderStageCreateInfo cs
-+ VkPipelineShaderStageCreateInfo stage
- VkPipelineCreateFlags flags /// Pipeline creation flags
- VkPipelineLayout layout /// Interface layout of the pipeline
- VkPipeline basePipelineHandle /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of
-@@ -1423,7 +1427,7 @@ class VkPipelineInputAssemblyStateCreateInfo {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
- const void* pNext /// Pointer to next structure
- VkPrimitiveTopology topology
-- platform.VkBool32 primitiveRestartEnable
-+ VkBool32 primitiveRestartEnable
- }
-
- class VkPipelineTessellationStateCreateInfo {
-@@ -1436,29 +1440,37 @@ class VkPipelineViewportStateCreateInfo {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
- const void* pNext /// Pointer to next structure
- u32 viewportCount
-+ const VkViewport* pViewports
-+ u32 scissorCount
-+ const VkRect2D* pScissors
- }
-
- class VkPipelineRasterStateCreateInfo {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO
- const void* pNext /// Pointer to next structure
-- platform.VkBool32 depthClipEnable
-- platform.VkBool32 rasterizerDiscardEnable
-+ VkBool32 depthClipEnable
-+ VkBool32 rasterizerDiscardEnable
- VkFillMode fillMode /// optional (GL45)
- VkCullMode cullMode
- VkFrontFace frontFace
-+ VkBool32 depthBiasEnable
-+ f32 depthBias
-+ f32 depthBiasClamp
-+ f32 slopeScaledDepthBias
-+ f32 lineWidth
- }
-
- class VkPipelineMultisampleStateCreateInfo {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
- const void* pNext /// Pointer to next structure
- u32 rasterSamples /// Number of samples used for rasterization
-- platform.VkBool32 sampleShadingEnable /// optional (GL45)
-+ VkBool32 sampleShadingEnable /// optional (GL45)
- f32 minSampleShading /// optional (GL45)
-- platform.VkSampleMask sampleMask
-+ const VkSampleMask* pSampleMask
- }
-
- class VkPipelineColorBlendAttachmentState {
-- platform.VkBool32 blendEnable
-+ VkBool32 blendEnable
- VkBlend srcBlendColor
- VkBlend destBlendColor
- VkBlendOp blendOpColor
-@@ -1471,11 +1483,13 @@ class VkPipelineColorBlendAttachmentState {
- class VkPipelineColorBlendStateCreateInfo {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
- const void* pNext /// Pointer to next structure
-- platform.VkBool32 alphaToCoverageEnable
-- platform.VkBool32 logicOpEnable
-+ VkBool32 alphaToCoverageEnable
-+ VkBool32 alphaToOneEnable
-+ VkBool32 logicOpEnable
- VkLogicOp logicOp
- u32 attachmentCount /// # of pAttachments
- const VkPipelineColorBlendAttachmentState* pAttachments
-+ f32[4] blendConst
- }
-
- class VkStencilOpState {
-@@ -1483,18 +1497,30 @@ class VkStencilOpState {
- VkStencilOp stencilPassOp
- VkStencilOp stencilDepthFailOp
- VkCompareOp stencilCompareOp
-+ u32 stencilCompareMask
-+ u32 stencilWriteMask
-+ u32 stencilReference
- }
-
- class VkPipelineDepthStencilStateCreateInfo {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
- const void* pNext /// Pointer to next structure
-- platform.VkBool32 depthTestEnable
-- platform.VkBool32 depthWriteEnable
-+ VkBool32 depthTestEnable
-+ VkBool32 depthWriteEnable
- VkCompareOp depthCompareOp
-- platform.VkBool32 depthBoundsEnable /// optional (depth_bounds_test)
-- platform.VkBool32 stencilTestEnable
-+ VkBool32 depthBoundsTestEnable /// optional (depth_bounds_test)
-+ VkBool32 stencilTestEnable
- VkStencilOpState front
- VkStencilOpState back
-+ f32 minDepthBounds
-+ f32 maxDepthBounds
-+}
-+
-+class VkPipelineDynamicStateCreateInfo {
-+ VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
-+ const void* pNext /// Pointer to next structure
-+ u32 dynamicStateCount
-+ const VkDynamicState* pDynamicStates
- }
-
- class VkGraphicsPipelineCreateInfo {
-@@ -1510,6 +1536,7 @@ class VkGraphicsPipelineCreateInfo {
- const VkPipelineMultisampleStateCreateInfo* pMultisampleState
- const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState
- const VkPipelineColorBlendStateCreateInfo* pColorBlendState
-+ const VkPipelineDynamicStateCreateInfo* pDynamicState
- VkPipelineCreateFlags flags /// Pipeline creation flags
- VkPipelineLayout layout /// Interface layout of the pipeline
- VkRenderPass renderPass
-@@ -1547,50 +1574,17 @@ class VkSamplerCreateInfo {
- VkTexFilter magFilter /// Filter mode for magnification
- VkTexFilter minFilter /// Filter mode for minifiation
- VkTexMipmapMode mipMode /// Mipmap selection mode
-- VkTexAddress addressU
-- VkTexAddress addressV
-- VkTexAddress addressW
-+ VkTexAddressMode addressModeU
-+ VkTexAddressMode addressModeV
-+ VkTexAddressMode addressModeW
- f32 mipLodBias
- f32 maxAnisotropy
-- platform.VkBool32 compareEnable
-+ VkBool32 compareEnable
- VkCompareOp compareOp
- f32 minLod
- f32 maxLod
- VkBorderColor borderColor
--}
--
--class VkDynamicViewportStateCreateInfo {
-- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO
-- const void* pNext /// Pointer to next structure
-- u32 viewportAndScissorCount /// number of entries in pViewports and pScissors
-- const VkViewport* pViewports
-- const VkRect2D* pScissors
--}
--
--class VkDynamicRasterStateCreateInfo {
-- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DYNAMIC_RASTER_STATE_CREATE_INFO
-- const void* pNext /// Pointer to next structure
-- f32 depthBias
-- f32 depthBiasClamp
-- f32 slopeScaledDepthBias
-- f32 lineWidth /// optional (GL45) - Width of lines
--}
--
--class VkDynamicColorBlendStateCreateInfo {
-- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DYNAMIC_COLOR_BLEND_STATE_CREATE_INFO
-- const void* pNext /// Pointer to next structure
-- f32[4] blendConst
--}
--
--class VkDynamicDepthStencilStateCreateInfo {
-- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE_CREATE_INFO
-- const void* pNext /// Pointer to next structure
-- f32 minDepthBounds /// optional (depth_bounds_test)
-- f32 maxDepthBounds /// optional (depth_bounds_test)
-- u32 stencilReadMask
-- u32 stencilWriteMask
-- u32 stencilFrontRef
-- u32 stencilBackRef
-+ VkBool32 unnormalizedCoordinates
- }
-
- class VkCmdPoolCreateInfo {
-@@ -1613,6 +1607,7 @@ class VkCmdBufferBeginInfo {
- const void* pNext /// Pointer to next structure
- VkCmdBufferOptimizeFlags flags /// Command buffer optimization flags
- VkRenderPass renderPass /// Render pass for secondary command buffers
-+ u32 subpass
- VkFramebuffer framebuffer /// Framebuffer for secondary command buffers
- }
-
-@@ -1622,16 +1617,16 @@ class VkRenderPassBeginInfo {
- VkRenderPass renderPass
- VkFramebuffer framebuffer
- VkRect2D renderArea
-- u32 attachmentCount
-- const VkClearValue* pAttachmentClearValues
-+ u32 clearValueCount
-+ const VkClearValue* pClearValues
- }
-
- @union
- /// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.
- class VkClearColorValue {
-- f32[4] f32
-- s32[4] s32
-- u32[4] u32
-+ f32[4] float32
-+ s32[4] int32
-+ u32[4] uint32
- }
-
- class VkClearDepthStencilValue {
-@@ -1643,7 +1638,7 @@ class VkClearDepthStencilValue {
- /// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared.
- class VkClearValue {
- VkClearColorValue color
-- VkClearDepthStencilValue ds
-+ VkClearDepthStencilValue depthStencil
- }
-
- class VkAttachmentDescription {
-@@ -1657,6 +1652,7 @@ class VkAttachmentDescription {
- VkAttachmentStoreOp stencilStoreOp /// Store op for stencil data
- VkImageLayout initialLayout
- VkImageLayout finalLayout
-+ VkAttachmentDescriptionFlags flags
- }
-
- class VkAttachmentReference {
-@@ -1670,13 +1666,13 @@ class VkSubpassDescription {
- VkPipelineBindPoint pipelineBindPoint /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
- VkSubpassDescriptionFlags flags
- u32 inputCount
-- const VkAttachmentReference* inputAttachments
-+ const VkAttachmentReference* pInputAttachments
- u32 colorCount
-- const VkAttachmentReference* colorAttachments
-- const VkAttachmentReference* resolveAttachments
-+ const VkAttachmentReference* pColorAttachments
-+ const VkAttachmentReference* pResolveAttachments
- VkAttachmentReference depthStencilAttachment
- u32 preserveCount
-- const VkAttachmentReference* preserveAttachments
-+ const VkAttachmentReference* pPreserveAttachments
- }
-
- class VkSubpassDependency {
-@@ -1688,7 +1684,7 @@ class VkSubpassDependency {
- VkPipelineStageFlags destStageMask
- VkMemoryOutputFlags outputMask
- VkMemoryInputFlags inputMask
-- platform.VkBool32 byRegion
-+ VkBool32 byRegion
- }
-
- class VkRenderPassCreateInfo {
-@@ -1715,64 +1711,57 @@ class VkFenceCreateInfo {
- }
-
- class VkPhysicalDeviceFeatures {
-- platform.VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined
-- platform.VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls
-- platform.VkBool32 imageCubeArray /// image views which are arrays of cube maps
-- platform.VkBool32 independentBlend /// blending operations are controlled per-attachment
-- platform.VkBool32 geometryShader /// geometry stage
-- platform.VkBool32 tessellationShader /// tessellation control and evaluation stage
-- platform.VkBool32 sampleRateShading /// per-sample shading and interpolation
-- platform.VkBool32 dualSourceBlend /// blend operations which take two sources
-- platform.VkBool32 logicOp /// logic operations
-- platform.VkBool32 instancedDrawIndirect /// multi draw indirect
-- platform.VkBool32 depthClip /// depth clipping
-- platform.VkBool32 depthBiasClamp /// depth bias clamping
-- platform.VkBool32 fillModeNonSolid /// point and wireframe fill modes
-- platform.VkBool32 depthBounds /// depth bounds test
-- platform.VkBool32 wideLines /// lines with width greater than 1
-- platform.VkBool32 largePoints /// points with size greater than 1
-- platform.VkBool32 textureCompressionETC2 /// ETC texture compression formats
-- platform.VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats
-- platform.VkBool32 textureCompressionBC /// BC1-7 texture compressed formats
-- platform.VkBool32 pipelineStatisticsQuery /// pipeline statistics query
-- platform.VkBool32 vertexSideEffects /// storage buffers and images in vertex stage
-- platform.VkBool32 tessellationSideEffects /// storage buffers and images in tessellation stage
-- platform.VkBool32 geometrySideEffects /// storage buffers and images in geometry stage
-- platform.VkBool32 fragmentSideEffects /// storage buffers and images in fragment stage
-- platform.VkBool32 shaderTessellationPointSize /// tessellation stage can export point size
-- platform.VkBool32 shaderGeometryPointSize /// geometry stage can export point size
-- platform.VkBool32 shaderTextureGatherExtended /// texture gather with run-time values and independent offsets
-- platform.VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images
-- platform.VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images
-- platform.VkBool32 shaderStorageBufferArrayConstantIndexing /// arrays of storage buffers can be accessed with constant indices
-- platform.VkBool32 shaderStorageImageArrayConstantIndexing /// arrays of storage images can be accessed with constant indices
-- platform.VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices
-- platform.VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices
-- platform.VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices
-- platform.VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices
-- platform.VkBool32 shaderClipDistance /// clip distance in shaders
-- platform.VkBool32 shaderCullDistance /// cull distance in shaders
-- platform.VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders
-- platform.VkBool32 shaderInt64 /// 64-bit integers in shaders
-- platform.VkBool32 shaderFloat16 /// 16-bit floats in shaders
-- platform.VkBool32 shaderInt16 /// 16-bit integers in shaders
-- platform.VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support)
-- platform.VkBool32 shaderResourceMinLOD /// shader can use texture operations that specify minimum resource LOD
-- platform.VkBool32 sparse /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level
-- platform.VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers
-- platform.VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images
-- platform.VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images
-- platform.VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples
-- platform.VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples
-- platform.VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples
-- platform.VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples
-- platform.VkBool32 sparseResidencyStandard2DBlockShape /// Sparse resources support: GPU will access all 2D (single sample) sparse resources using the standard block shapes (based on pixel format)
-- platform.VkBool32 sparseResidencyStandard2DMSBlockShape /// Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard block shapes (based on pixel format)
-- platform.VkBool32 sparseResidencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format)
-- platform.VkBool32 sparseResidencyAlignedMipSize /// Sparse resources support: Images with mip-level dimensions that are NOT a multiple of the block size will be placed in the mip tail
-- platform.VkBool32 sparseResidencyNonResident /// Sparse resources support: GPU can safely access non-resident regions of a resource, read values from read-write resources are undefined
-- platform.VkBool32 sparseResidencyNonResidentStrict /// Sparse resources support: GPU can safely access non-resident regions of a resource, all reads return as if data is 0, writes are discarded
-- platform.VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)
-+ VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined
-+ VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls
-+ VkBool32 imageCubeArray /// image views which are arrays of cube maps
-+ VkBool32 independentBlend /// blending operations are controlled per-attachment
-+ VkBool32 geometryShader /// geometry stage
-+ VkBool32 tessellationShader /// tessellation control and evaluation stage
-+ VkBool32 sampleRateShading /// per-sample shading and interpolation
-+ VkBool32 dualSourceBlend /// blend operations which take two sources
-+ VkBool32 logicOp /// logic operations
-+ VkBool32 multiDrawIndirect /// multi draw indirect
-+ VkBool32 depthClip /// depth clipping
-+ VkBool32 depthBiasClamp /// depth bias clamping
-+ VkBool32 fillModeNonSolid /// point and wireframe fill modes
-+ VkBool32 depthBounds /// depth bounds test
-+ VkBool32 wideLines /// lines with width greater than 1
-+ VkBool32 largePoints /// points with size greater than 1
-+ VkBool32 textureCompressionETC2 /// ETC texture compression formats
-+ VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats
-+ VkBool32 textureCompressionBC /// BC1-7 texture compressed formats
-+ VkBool32 occlusionQueryNonConservative /// non-conservative (exact) occlusion queries
-+ VkBool32 pipelineStatisticsQuery /// pipeline statistics query
-+ VkBool32 vertexSideEffects /// storage buffers and images in vertex stage
-+ VkBool32 tessellationSideEffects /// storage buffers and images in tessellation stage
-+ VkBool32 geometrySideEffects /// storage buffers and images in geometry stage
-+ VkBool32 fragmentSideEffects /// storage buffers and images in fragment stage
-+ VkBool32 shaderTessellationPointSize /// tessellation stage can export point size
-+ VkBool32 shaderGeometryPointSize /// geometry stage can export point size
-+ VkBool32 shaderImageGatherExtended /// texture gather with run-time values and independent offsets
-+ VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images
-+ VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images
-+ VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices
-+ VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices
-+ VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices
-+ VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices
-+ VkBool32 shaderClipDistance /// clip distance in shaders
-+ VkBool32 shaderCullDistance /// cull distance in shaders
-+ VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders
-+ VkBool32 shaderInt64 /// 64-bit integers in shaders
-+ VkBool32 shaderInt16 /// 16-bit integers in shaders
-+ VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support)
-+ VkBool32 shaderResourceMinLOD /// shader can use texture operations that specify minimum resource LOD
-+ VkBool32 alphaToOne /// The fragment alpha channel can be forced to maximum representable alpha value
-+ VkBool32 sparseBinding /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level
-+ VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers
-+ VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images
-+ VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images
-+ VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples
-+ VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples
-+ VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples
-+ VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples
-+ VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)
- }
-
- class VkPhysicalDeviceLimits {
-@@ -1782,13 +1771,15 @@ class VkPhysicalDeviceLimits {
- u32 maxImageDimension3D /// max 3D image dimension
- u32 maxImageDimensionCube /// max cubemap image dimension
- u32 maxImageArrayLayers /// max layers for image arrays
-+ VkSampleCountFlags sampleCounts /// sample counts supported for all images supporting rendering and sampling
- u32 maxTexelBufferSize /// max texel buffer size (bytes)
- u32 maxUniformBufferSize /// max uniform buffer size (bytes)
- u32 maxStorageBufferSize /// max storage buffer size (bytes)
- u32 maxPushConstantsSize /// max size of the push constants pool (bytes)
- /// memory limits
- u32 maxMemoryAllocationCount /// max number of device memory allocations supported
-- platform.VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage
-+ VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage
-+ VkDeviceSize sparseAddressSpaceSize /// Total address space available for sparse allocations (bytes)
- /// descriptor set limits
- u32 maxBoundDescriptorSets /// max number of descriptors sets that can be bound to a pipeline
- u32 maxDescriptorSets /// max number of allocated descriptor sets
-@@ -1799,11 +1790,14 @@ class VkPhysicalDeviceLimits {
- u32 maxPerStageDescriptorStorageImages /// max num of storage images allowed per-stage in a descriptor set
- u32 maxDescriptorSetSamplers /// max num of samplers allowed in all stages in a descriptor set
- u32 maxDescriptorSetUniformBuffers /// max num of uniform buffers allowed in all stages in a descriptor set
-+ u32 maxDescriptorSetUniformBuffersDynamic /// max num of dynamic uniform buffers allowed in all stages in a descriptor set
- u32 maxDescriptorSetStorageBuffers /// max num of storage buffers allowed in all stages in a descriptor set
-+ u32 maxDescriptorSetStorageBuffersDynamic /// max num of dynamic storage buffers allowed in all stages in a descriptor set
- u32 maxDescriptorSetSampledImages /// max num of sampled images allowed in all stages in a descriptor set
- u32 maxDescriptorSetStorageImages /// max num of storage images allowed in all stages in a descriptor set
- /// vertex stage limits
- u32 maxVertexInputAttributes /// max num of vertex input attribute slots
-+ u32 maxVertexInputBindings /// max num of vertex input binding slots
- u32 maxVertexInputAttributeOffset /// max vertex input attribute offset added to vertex buffer offset
- u32 maxVertexInputBindingStride /// max vertex input binding stride
- u32 maxVertexOutputComponents /// max num of output components written by vertex shader
-@@ -1839,13 +1833,12 @@ class VkPhysicalDeviceLimits {
-
- u32 maxDrawIndexedIndexValue /// max index value for indexed draw calls (for 32-bit indices)
- u32 maxDrawIndirectInstanceCount /// max instance count for indirect draw calls
-- platform.VkBool32 primitiveRestartForPatches /// is primitive restart supported for PATCHES
-+ VkBool32 primitiveRestartForPatches /// is primitive restart supported for PATCHES
-
- f32 maxSamplerLodBias /// max absolute sampler level of detail bias
- f32 maxSamplerAnisotropy /// max degree of sampler anisotropy
-
- u32 maxViewports /// max number of active viewports
-- u32 maxDynamicViewportStates /// max number of dynamic viewport state objects
- u32[2] maxViewportDimensions /// max viewport dimensions (x,y)
- f32[2] viewportBoundsRange /// viewport bounds range (min,max)
- u32 viewportSubPixelBits /// num bits of subpixel precision for viewport
-@@ -1883,12 +1876,21 @@ class VkPhysicalDeviceLimits {
- u32 maxCullDistances /// max number of cull distances
- u32 maxCombinedClipAndCullDistances /// max combined number of user clipping
-
-- f32[2] pointSizeRange /// range (min,max) of supported point sizes
-- f32[2] lineWidthRange /// range (min,max) of supported line widths
-+ f32[2] pointSizeRange /// range (min,max) of supported point sizes
-+ f32[2] lineWidthRange /// range (min,max) of supported line widths
- f32 pointSizeGranularity /// granularity of supported point sizes
- f32 lineWidthGranularity /// granularity of supported line widths
- }
-
-+class VkPhysicalDeviceSparseProperties {
-+ VkBool32 residencyStandard2DBlockShape /// Sparse resources support: GPU will access all 2D (single sample) sparse resources using the standard block shapes (based on pixel format)
-+ VkBool32 residencyStandard2DMSBlockShape /// Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard block shapes (based on pixel format)
-+ VkBool32 residencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format)
-+ VkBool32 residencyAlignedMipSize /// Sparse resources support: Images with mip-level dimensions that are NOT a multiple of the block size will be placed in the mip tail
-+ VkBool32 residencyNonResident /// Sparse resources support: GPU can safely access non-resident regions of a resource, read values from read-write resources are undefined
-+ VkBool32 residencyNonResidentStrict /// Sparse resources support: GPU can safely access non-resident regions of a resource, all reads return as if data is 0, writes are discarded
-+}
-+
- class VkSemaphoreCreateInfo {
- VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
- const void* pNext /// Pointer to next structure
-@@ -1908,7 +1910,7 @@ class VkFramebufferCreateInfo {
- const void* pNext /// Pointer to next structure
- VkRenderPass renderPass
- u32 attachmentCount
-- const VkAttachmentBindInfo* pAttachments
-+ const VkImageView* pAttachments
- u32 width
- u32 height
- u32 layers
-@@ -1981,13 +1983,11 @@ cmd VkResult vkCreateInstance(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyInstance(
-+cmd void vkDestroyInstance(
- VkInstance instance) {
- instanceObject := GetInstance(instance)
-
- State.Instances[instance] = null
--
-- return ?
- }
-
- @threadSafety("system")
-@@ -2015,7 +2015,7 @@ cmd VkResult vkEnumeratePhysicalDevices(
- cmd PFN_vkVoidFunction vkGetDeviceProcAddr(
- VkDevice device,
- const char* pName) {
-- if device != VK_NULL_HANDLE {
-+ if device != NULL_HANDLE {
- device := GetDevice(device)
- }
-
-@@ -2025,7 +2025,7 @@ cmd PFN_vkVoidFunction vkGetDeviceProcAddr(
- cmd PFN_vkVoidFunction vkGetInstanceProcAddr(
- VkInstance instance,
- const char* pName) {
-- if instance != VK_NULL_HANDLE {
-+ if instance != NULL_HANDLE {
- instanceObject := GetInstance(instance)
- }
-
-@@ -2043,27 +2043,25 @@ cmd VkResult vkGetPhysicalDeviceProperties(
- return ?
- }
-
--cmd VkResult vkGetPhysicalDeviceQueueCount(
-- VkPhysicalDevice physicalDevice,
-- u32* pCount) {
-- physicalDeviceObject := GetPhysicalDevice(physicalDevice)
--
-- count := ?
-- pCount[0] = count
--
-- return ?
--}
--
--cmd VkResult vkGetPhysicalDeviceQueueProperties(
-+cmd VkResult vkGetPhysicalDeviceQueueFamilyProperties(
- VkPhysicalDevice physicalDevice,
-- u32 count,
-- VkPhysicalDeviceQueueProperties* pQueueProperties) {
-+ u32* pCount,
-+ VkQueueFamilyProperties* pQueueFamilyProperties) {
- physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-- queuesProperties := pQueueProperties[0:count]
-- for i in (0 .. count) {
-- queueProperties := as!VkPhysicalDeviceQueueProperties(?)
-- queuesProperties[i] = queueProperties
-- }
-+ // TODO: Figure out how to express fetch-count-or-properties
-+ // This version fails 'apic validate' with 'fence not allowed in
-+ // *semantic.Branch'. Other attempts have failed with the same or other
-+ // errors.
-+ // if pQueueFamilyProperties != null {
-+ // queuesProperties := pQueueFamilyProperties[0:pCount[0]]
-+ // for i in (0 .. pCount[0]) {
-+ // queueProperties := as!VkQueueFamilyProperties(?)
-+ // queuesProperties[i] = queueProperties
-+ // }
-+ // } else {
-+ // count := ?
-+ // pCount[0] = count
-+ // }
- return ?
- }
-
-@@ -2107,6 +2105,7 @@ cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
- VkImageType type,
- VkImageTiling tiling,
- VkImageUsageFlags usage,
-+ VkImageCreateFlags flags,
- VkImageFormatProperties* pImageFormatProperties) {
- physicalDeviceObject := GetPhysicalDevice(physicalDevice)
-
-@@ -2116,17 +2115,6 @@ cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
- return ?
- }
-
--cmd VkResult vkGetPhysicalDeviceLimits(
-- VkPhysicalDevice physicalDevice,
-- VkPhysicalDeviceLimits* pLimits) {
-- physicalDeviceObject := GetPhysicalDevice(physicalDevice)
--
-- limits := ?
-- pLimits[0] = limits
--
-- return ?
--}
--
-
- // Device functions
-
-@@ -2146,19 +2134,17 @@ cmd VkResult vkCreateDevice(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyDevice(
-+cmd void vkDestroyDevice(
- VkDevice device) {
- deviceObject := GetDevice(device)
-
- State.Devices[device] = null
--
-- return ?
- }
-
-
- // Extension discovery functions
-
--cmd VkResult vkGetGlobalLayerProperties(
-+cmd VkResult vkEnumerateInstanceLayerProperties(
- u32* pCount,
- VkLayerProperties* pProperties) {
- count := as!u32(?)
-@@ -2173,7 +2159,7 @@ cmd VkResult vkGetGlobalLayerProperties(
- return ?
- }
-
--cmd VkResult vkGetGlobalExtensionProperties(
-+cmd VkResult vkEnumerateInstanceExtensionProperties(
- const char* pLayerName,
- u32* pCount,
- VkExtensionProperties* pProperties) {
-@@ -2189,7 +2175,7 @@ cmd VkResult vkGetGlobalExtensionProperties(
- return ?
- }
-
--cmd VkResult vkGetPhysicalDeviceLayerProperties(
-+cmd VkResult vkEnumerateDeviceLayerProperties(
- VkPhysicalDevice physicalDevice,
- u32* pCount,
- VkLayerProperties* pProperties) {
-@@ -2206,7 +2192,7 @@ cmd VkResult vkGetPhysicalDeviceLayerProperties(
- return ?
- }
-
--cmd VkResult vkGetPhysicalDeviceExtensionProperties(
-+cmd VkResult vkEnumerateDeviceExtensionProperties(
- VkPhysicalDevice physicalDevice,
- const char* pLayerName,
- u32* pCount,
-@@ -2254,7 +2240,7 @@ cmd VkResult vkQueueSubmit(
- VkFence fence) {
- queueObject := GetQueue(queue)
-
-- if fence != VK_NULL_HANDLE {
-+ if fence != NULL_HANDLE {
- fenceObject := GetFence(fence)
- assert(fenceObject.device == queueObject.device)
- }
-@@ -2309,7 +2295,7 @@ cmd VkResult vkAllocMemory(
- }
-
- @threadSafety("system")
--cmd VkResult vkFreeMemory(
-+cmd void vkFreeMemory(
- VkDevice device,
- VkDeviceMemory mem) {
- deviceObject := GetDevice(device)
-@@ -2322,16 +2308,14 @@ cmd VkResult vkFreeMemory(
- validate("MemoryCheck", len(memObject.boundCommandBuffers) == 0,
- "vkFreeMemory: cmdBuffers still bound")
- State.DeviceMemories[mem] = null
--
-- return ?
- }
-
- @threadSafety("app")
- cmd VkResult vkMapMemory(
- VkDevice device,
- VkDeviceMemory mem,
-- platform.VkDeviceSize offset,
-- platform.VkDeviceSize size,
-+ VkDeviceSize offset,
-+ VkDeviceSize size,
- VkMemoryMapFlags flags,
- void** ppData) {
- deviceObject := GetDevice(device)
-@@ -2345,14 +2329,12 @@ cmd VkResult vkMapMemory(
- }
-
- @threadSafety("app")
--cmd VkResult vkUnmapMemory(
-+cmd void vkUnmapMemory(
- VkDevice device,
- VkDeviceMemory mem) {
- deviceObject := GetDevice(device)
- memObject := GetDeviceMemory(mem)
- assert(memObject.device == device)
--
-- return ?
- }
-
- cmd VkResult vkFlushMappedMemoryRanges(
-@@ -2395,10 +2377,10 @@ cmd VkResult vkInvalidateMappedMemoryRanges(
- cmd VkResult vkGetDeviceMemoryCommitment(
- VkDevice device,
- VkDeviceMemory memory,
-- platform.VkDeviceSize* pCommittedMemoryInBytes) {
-+ VkDeviceSize* pCommittedMemoryInBytes) {
- deviceObject := GetDevice(device)
-
-- if memory != VK_NULL_HANDLE {
-+ if memory != NULL_HANDLE {
- memoryObject := GetDeviceMemory(memory)
- assert(memoryObject.device == device)
- }
-@@ -2424,19 +2406,19 @@ cmd VkResult vkBindBufferMemory(
- VkDevice device,
- VkBuffer buffer,
- VkDeviceMemory mem,
-- platform.VkDeviceSize memOffset) {
-+ VkDeviceSize memOffset) {
- deviceObject := GetDevice(device)
- bufferObject := GetBuffer(buffer)
- assert(bufferObject.device == device)
-
- // Unbind buffer from previous memory object, if not VK_NULL_HANDLE.
-- if bufferObject.mem != VK_NULL_HANDLE {
-+ if bufferObject.mem != NULL_HANDLE {
- memObject := GetDeviceMemory(bufferObject.mem)
- memObject.boundObjects[as!u64(buffer)] = null
- }
-
- // Bind buffer to given memory object, if not VK_NULL_HANDLE.
-- if mem != VK_NULL_HANDLE {
-+ if mem != NULL_HANDLE {
- memObject := GetDeviceMemory(mem)
- assert(memObject.device == device)
- memObject.boundObjects[as!u64(buffer)] = memOffset
-@@ -2462,19 +2444,19 @@ cmd VkResult vkBindImageMemory(
- VkDevice device,
- VkImage image,
- VkDeviceMemory mem,
-- platform.VkDeviceSize memOffset) {
-+ VkDeviceSize memOffset) {
- deviceObject := GetDevice(device)
- imageObject := GetImage(image)
- assert(imageObject.device == device)
-
- // Unbind image from previous memory object, if not VK_NULL_HANDLE.
-- if imageObject.mem != VK_NULL_HANDLE {
-+ if imageObject.mem != NULL_HANDLE {
- memObject := GetDeviceMemory(imageObject.mem)
- memObject.boundObjects[as!u64(image)] = null
- }
-
- // Bind image to given memory object, if not VK_NULL_HANDLE.
-- if mem != VK_NULL_HANDLE {
-+ if mem != NULL_HANDLE {
- memObject := GetDeviceMemory(mem)
- assert(memObject.device == device)
- memObject.boundObjects[as!u64(image)] = memOffset
-@@ -2567,7 +2549,7 @@ cmd VkResult vkCreateFence(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyFence(
-+cmd void vkDestroyFence(
- VkDevice device,
- VkFence fence) {
- deviceObject := GetDevice(device)
-@@ -2575,8 +2557,6 @@ cmd VkResult vkDestroyFence(
- assert(fenceObject.device == device)
-
- State.Fences[fence] = null
--
-- return ?
- }
-
- @threadSafety("system")
-@@ -2613,7 +2593,7 @@ cmd VkResult vkWaitForFences(
- VkDevice device,
- u32 fenceCount,
- const VkFence* pFences,
-- platform.VkBool32 waitAll,
-+ VkBool32 waitAll,
- u64 timeout) { /// timeout in nanoseconds
- deviceObject := GetDevice(device)
-
-@@ -2646,7 +2626,7 @@ cmd VkResult vkCreateSemaphore(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroySemaphore(
-+cmd void vkDestroySemaphore(
- VkDevice device,
- VkSemaphore semaphore) {
- deviceObject := GetDevice(device)
-@@ -2654,8 +2634,6 @@ cmd VkResult vkDestroySemaphore(
- assert(semaphoreObject.device == device)
-
- State.Semaphores[semaphore] = null
--
-- return ?
- }
-
- @threadSafety("app")
-@@ -2699,7 +2677,7 @@ cmd VkResult vkCreateEvent(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyEvent(
-+cmd void vkDestroyEvent(
- VkDevice device,
- VkEvent event) {
- deviceObject := GetDevice(device)
-@@ -2707,8 +2685,6 @@ cmd VkResult vkDestroyEvent(
- assert(eventObject.device == device)
-
- State.Events[event] = null
--
-- return ?
- }
-
- @threadSafety("system")
-@@ -2763,7 +2739,7 @@ cmd VkResult vkCreateQueryPool(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyQueryPool(
-+cmd void vkDestroyQueryPool(
- VkDevice device,
- VkQueryPool queryPool) {
- deviceObject := GetDevice(device)
-@@ -2771,8 +2747,6 @@ cmd VkResult vkDestroyQueryPool(
- assert(queryPoolObject.device == device)
-
- State.QueryPools[queryPool] = null
--
-- return ?
- }
-
- @threadSafety("system")
-@@ -2813,7 +2787,7 @@ cmd VkResult vkCreateBuffer(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyBuffer(
-+cmd void vkDestroyBuffer(
- VkDevice device,
- VkBuffer buffer) {
- deviceObject := GetDevice(device)
-@@ -2822,8 +2796,6 @@ cmd VkResult vkDestroyBuffer(
-
- assert(bufferObject.mem == 0)
- State.Buffers[buffer] = null
--
-- return ?
- }
-
-
-@@ -2848,7 +2820,7 @@ cmd VkResult vkCreateBufferView(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyBufferView(
-+cmd void vkDestroyBufferView(
- VkDevice device,
- VkBufferView bufferView) {
- deviceObject := GetDevice(device)
-@@ -2856,8 +2828,6 @@ cmd VkResult vkDestroyBufferView(
- assert(bufferViewObject.device == device)
-
- State.BufferViews[bufferView] = null
--
-- return ?
- }
-
-
-@@ -2879,7 +2849,7 @@ cmd VkResult vkCreateImage(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyImage(
-+cmd void vkDestroyImage(
- VkDevice device,
- VkImage image) {
- deviceObject := GetDevice(device)
-@@ -2888,8 +2858,6 @@ cmd VkResult vkDestroyImage(
-
- assert(imageObject.mem == 0)
- State.Images[image] = null
--
-- return ?
- }
-
- cmd VkResult vkGetImageSubresourceLayout(
-@@ -2926,7 +2894,7 @@ cmd VkResult vkCreateImageView(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyImageView(
-+cmd void vkDestroyImageView(
- VkDevice device,
- VkImageView imageView) {
- deviceObject := GetDevice(device)
-@@ -2934,39 +2902,6 @@ cmd VkResult vkDestroyImageView(
- assert(imageViewObject.device == device)
-
- State.ImageViews[imageView] = null
--
-- return ?
--}
--
--@threadSafety("system")
--cmd VkResult vkCreateAttachmentView(
-- VkDevice device,
-- const VkAttachmentViewCreateInfo* pCreateInfo,
-- VkAttachmentView* pView) {
-- assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO)
-- deviceObject := GetDevice(device)
--
-- imageObject := GetImage(pCreateInfo.image)
-- assert(imageObject.device == device)
--
-- view := ?
-- pView[0] = view
-- State.AttachmentViews[view] = new!AttachmentViewObject(device: device, image: pCreateInfo.image)
--
-- return ?
--}
--
--@threadSafety("system")
--cmd VkResult vkDestroyAttachmentView(
-- VkDevice device,
-- VkAttachmentView attachmentView) {
-- deviceObject := GetDevice(device)
-- attachmentViewObject := GetAttachmentView(attachmentView)
-- assert(attachmentViewObject.device == device)
--
-- State.AttachmentViews[attachmentView] = null
--
-- return ?
- }
-
-
-@@ -2986,7 +2921,7 @@ cmd VkResult vkCreateShaderModule(
- return ?
- }
-
--cmd VkResult vkDestroyShaderModule(
-+cmd void vkDestroyShaderModule(
- VkDevice device,
- VkShaderModule shaderModule) {
- deviceObject := GetDevice(device)
-@@ -2994,8 +2929,6 @@ cmd VkResult vkDestroyShaderModule(
- assert(shaderModuleObject.device == device)
-
- State.ShaderModules[shaderModule] = null
--
-- return ?
- }
-
- @threadSafety("system")
-@@ -3014,7 +2947,7 @@ cmd VkResult vkCreateShader(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyShader(
-+cmd void vkDestroyShader(
- VkDevice device,
- VkShader shader) {
- deviceObject := GetDevice(device)
-@@ -3022,8 +2955,6 @@ cmd VkResult vkDestroyShader(
- assert(shaderObject.device == device)
-
- State.Shaders[shader] = null
--
-- return ?
- }
-
-
-@@ -3043,7 +2974,7 @@ cmd VkResult vkCreatePipelineCache(
- return ?
- }
-
--cmd VkResult vkDestroyPipelineCache(
-+cmd void vkDestroyPipelineCache(
- VkDevice device,
- VkPipelineCache pipelineCache) {
- deviceObject := GetDevice(device)
-@@ -3051,8 +2982,6 @@ cmd VkResult vkDestroyPipelineCache(
- assert(pipelineCacheObject.device == device)
-
- State.PipelineCaches[pipelineCache] = null
--
-- return ?
- }
-
- cmd platform.size_t vkGetPipelineCacheSize(
-@@ -3102,7 +3031,7 @@ cmd VkResult vkCreateGraphicsPipelines(
- const VkGraphicsPipelineCreateInfo* pCreateInfos,
- VkPipeline* pPipelines) {
- deviceObject := GetDevice(device)
-- if pipelineCache != VK_NULL_HANDLE {
-+ if pipelineCache != NULL_HANDLE {
- pipelineCacheObject := GetPipelineCache(pipelineCache)
- assert(pipelineCacheObject.device == device)
- }
-@@ -3125,7 +3054,7 @@ cmd VkResult vkCreateComputePipelines(
- const VkComputePipelineCreateInfo* pCreateInfos,
- VkPipeline* pPipelines) {
- deviceObject := GetDevice(device)
-- if pipelineCache != VK_NULL_HANDLE {
-+ if pipelineCache != NULL_HANDLE {
- pipelineCacheObject := GetPipelineCache(pipelineCache)
- assert(pipelineCacheObject.device == device)
- }
-@@ -3142,7 +3071,7 @@ cmd VkResult vkCreateComputePipelines(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyPipeline(
-+cmd void vkDestroyPipeline(
- VkDevice device,
- VkPipeline pipeline) {
- deviceObject := GetDevice(device)
-@@ -3150,8 +3079,6 @@ cmd VkResult vkDestroyPipeline(
- assert(pipelineObjects.device == device)
-
- State.Pipelines[pipeline] = null
--
-- return ?
- }
-
-
-@@ -3173,7 +3100,7 @@ cmd VkResult vkCreatePipelineLayout(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyPipelineLayout(
-+cmd void vkDestroyPipelineLayout(
- VkDevice device,
- VkPipelineLayout pipelineLayout) {
- deviceObject := GetDevice(device)
-@@ -3181,8 +3108,6 @@ cmd VkResult vkDestroyPipelineLayout(
- assert(pipelineLayoutObjects.device == device)
-
- State.PipelineLayouts[pipelineLayout] = null
--
-- return ?
- }
-
-
-@@ -3204,7 +3129,7 @@ cmd VkResult vkCreateSampler(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroySampler(
-+cmd void vkDestroySampler(
- VkDevice device,
- VkSampler sampler) {
- deviceObject := GetDevice(device)
-@@ -3212,8 +3137,6 @@ cmd VkResult vkDestroySampler(
- assert(samplerObject.device == device)
-
- State.Samplers[sampler] = null
--
-- return ?
- }
-
-
-@@ -3235,7 +3158,7 @@ cmd VkResult vkCreateDescriptorSetLayout(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyDescriptorSetLayout(
-+cmd void vkDestroyDescriptorSetLayout(
- VkDevice device,
- VkDescriptorSetLayout descriptorSetLayout) {
- deviceObject := GetDevice(device)
-@@ -3243,16 +3166,12 @@ cmd VkResult vkDestroyDescriptorSetLayout(
- assert(descriptorSetLayoutObject.device == device)
-
- State.DescriptorSetLayouts[descriptorSetLayout] = null
--
-- return ?
- }
-
- @threadSafety("system")
- cmd VkResult vkCreateDescriptorPool(
- VkDevice device,
-- VkDescriptorPoolUsage poolUsage,
-- u32 maxSets,
-- const VkDescriptorPoolCreateInfo* pCreateInfo,
-+ const VkDescriptorPoolCreateInfo* pCreateInfo
- VkDescriptorPool* pDescriptorPool) {
- assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)
- deviceObject := GetDevice(device)
-@@ -3265,7 +3184,7 @@ cmd VkResult vkCreateDescriptorPool(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyDescriptorPool(
-+cmd void vkDestroyDescriptorPool(
- VkDevice device,
- VkDescriptorPool descriptorPool) {
- deviceObject := GetDevice(device)
-@@ -3273,8 +3192,6 @@ cmd VkResult vkDestroyDescriptorPool(
- assert(descriptorPoolObject.device == device)
-
- State.DescriptorPools[descriptorPool] = null
--
-- return ?
- }
-
- @threadSafety("app")
-@@ -3295,8 +3212,7 @@ cmd VkResult vkAllocDescriptorSets(
- VkDescriptorSetUsage setUsage,
- u32 count,
- const VkDescriptorSetLayout* pSetLayouts,
-- VkDescriptorSet* pDescriptorSets,
-- u32* pCount) {
-+ VkDescriptorSet* pDescriptorSets) {
- deviceObject := GetDevice(device)
- descriptorPoolObject := GetDescriptorPool(descriptorPool)
-
-@@ -3307,10 +3223,8 @@ cmd VkResult vkAllocDescriptorSets(
- assert(setLayoutObject.device == device)
- }
-
-- setsCount := as!u32(?)
-- pCount[0] = setsCount
-- descriptorSets := pDescriptorSets[0:setsCount]
-- for i in (0 .. setsCount) {
-+ descriptorSets := pDescriptorSets[0:count]
-+ for i in (0 .. count) {
- descriptorSet := ?
- descriptorSets[i] = descriptorSet
- State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device)
-@@ -3338,7 +3252,7 @@ cmd VkResult vkFreeDescriptorSets(
- return ?
- }
-
--cmd VkResult vkUpdateDescriptorSets(
-+cmd void vkUpdateDescriptorSets(
- VkDevice device,
- u32 writeCount,
- const VkWriteDescriptorSet* pDescriptorWrites,
-@@ -3359,123 +3273,6 @@ cmd VkResult vkUpdateDescriptorSets(
- descriptorCopyObject := GetDescriptorSet(descriptorCopy.destSet)
- assert(descriptorCopyObject.device == device)
- }
--
-- return ?
--}
--
--
--// State object functions
--
--@threadSafety("system")
--cmd VkResult vkCreateDynamicViewportState(
-- VkDevice device,
-- const VkDynamicViewportStateCreateInfo* pCreateInfo,
-- VkDynamicViewportState* pState) {
-- assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO)
-- deviceObject := GetDevice(device)
--
-- state := ?
-- pState[0] = state
-- State.DynamicViewportStates[state] = new!DynamicViewportStateObject(device: device)
--
-- return ?
--}
--
--@threadSafety("system")
--cmd VkResult vkDestroyDynamicViewportState(
-- VkDevice device,
-- VkDynamicViewportState dynamicViewportState) {
-- deviceObject := GetDevice(device)
-- dynamicViewportStateObject := GetDynamicViewportState(dynamicViewportState)
-- assert(dynamicViewportStateObject.device == device)
--
-- State.DynamicViewportStates[dynamicViewportState] = null
--
-- return ?
--}
--
--@threadSafety("system")
--cmd VkResult vkCreateDynamicRasterState(
-- VkDevice device,
-- const VkDynamicRasterStateCreateInfo* pCreateInfo,
-- VkDynamicRasterState* pState) {
-- assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DYNAMIC_RASTER_STATE_CREATE_INFO)
-- deviceObject := GetDevice(device)
--
-- state := ?
-- pState[0] = state
-- State.DynamicRasterStates[state] = new!DynamicRasterStateObject(device: device)
--
-- return ?
--}
--
--@threadSafety("system")
--cmd VkResult vkDestroyDynamicRasterState(
-- VkDevice device,
-- VkDynamicRasterState dynamicRasterState) {
-- deviceObject := GetDevice(device)
-- dynamicRasterStateObject := GetDynamicRasterState(dynamicRasterState)
-- assert(dynamicRasterStateObject.device == device)
--
-- State.DynamicRasterStates[dynamicRasterState] = null
--
-- return ?
--}
--
--@threadSafety("system")
--cmd VkResult vkCreateDynamicColorBlendState(
-- VkDevice device,
-- const VkDynamicColorBlendStateCreateInfo* pCreateInfo,
-- VkDynamicColorBlendState* pState) {
-- assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DYNAMIC_COLOR_BLEND_STATE_CREATE_INFO)
-- deviceObject := GetDevice(device)
--
-- state := ?
-- pState[0] = state
-- State.DynamicColorBlendStates[state] = new!DynamicColorBlendStateObject(device: device)
--
-- return ?
--}
--
--@threadSafety("system")
--cmd VkResult vkDestroyDynamicColorBlendState(
-- VkDevice device,
-- VkDynamicColorBlendState dynamicColorBlendState) {
-- deviceObject := GetDevice(device)
-- dynamicColorBlendStateObject := GetDynamicColorBlendState(dynamicColorBlendState)
-- assert(dynamicColorBlendStateObject.device == device)
--
-- State.DynamicColorBlendStates[dynamicColorBlendState] = null
--
-- return ?
--}
--
--@threadSafety("system")
--cmd VkResult vkCreateDynamicDepthStencilState(
-- VkDevice device,
-- const VkDynamicDepthStencilStateCreateInfo* pCreateInfo,
-- VkDynamicDepthStencilState* pState) {
-- assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE_CREATE_INFO)
-- deviceObject := GetDevice(device)
--
-- state := ?
-- pState[0] = state
-- State.DynamicDepthStencilStates[state] = new!DynamicDepthStencilStateObject(device: device)
--
-- return ?
--}
--
--@threadSafety("system")
--cmd VkResult vkDestroyDynamicDepthStencilState(
-- VkDevice device,
-- VkDynamicDepthStencilState dynamicDepthStencilState) {
-- deviceObject := GetDevice(device)
-- dynamicDepthStencilStateObject := GetDynamicDepthStencilState(dynamicDepthStencilState)
-- assert(dynamicDepthStencilStateObject.device == device)
--
-- State.DynamicDepthStencilStates[dynamicDepthStencilState] = null
--
-- return ?
- }
-
-
-@@ -3497,7 +3294,7 @@ cmd VkResult vkCreateFramebuffer(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyFramebuffer(
-+cmd void vkDestroyFramebuffer(
- VkDevice device,
- VkFramebuffer framebuffer) {
- deviceObject := GetDevice(device)
-@@ -3505,8 +3302,6 @@ cmd VkResult vkDestroyFramebuffer(
- assert(framebufferObject.device == device)
-
- State.Framebuffers[framebuffer] = null
--
-- return ?
- }
-
-
-@@ -3528,7 +3323,7 @@ cmd VkResult vkCreateRenderPass(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyRenderPass(
-+cmd void vkDestroyRenderPass(
- VkDevice device,
- VkRenderPass renderPass) {
- deviceObject := GetDevice(device)
-@@ -3536,8 +3331,6 @@ cmd VkResult vkDestroyRenderPass(
- assert(renderPassObject.device == device)
-
- State.RenderPasses[renderPass] = null
--
-- return ?
- }
-
- cmd VkResult vkGetRenderAreaGranularity(
-@@ -3569,7 +3362,7 @@ cmd VkResult vkCreateCommandPool(
- return ?
- }
-
--cmd VkResult vkDestroyCommandPool(
-+cmd void vkDestroyCommandPool(
- VkDevice device,
- VkCmdPool cmdPool) {
- deviceObject := GetDevice(device)
-@@ -3577,8 +3370,6 @@ cmd VkResult vkDestroyCommandPool(
- assert(cmdPoolObject.device == device)
-
- State.CmdPools[cmdPool] = null
--
-- return ?
- }
-
- cmd VkResult vkResetCommandPool(
-@@ -3625,7 +3416,7 @@ cmd VkResult vkCreateCommandBuffer(
- }
-
- @threadSafety("system")
--cmd VkResult vkDestroyCommandBuffer(
-+cmd void vkDestroyCommandBuffer(
- VkDevice device,
- VkCmdBuffer commandBuffer) {
- deviceObject := GetDevice(device)
-@@ -3634,8 +3425,6 @@ cmd VkResult vkDestroyCommandBuffer(
-
- // TODO: iterate over boundObjects and clear memory bindings
- State.CmdBuffers[commandBuffer] = null
--
-- return ?
- }
-
- @threadSafety("app")
-@@ -3689,49 +3478,93 @@ cmd void vkCmdBindPipeline(
- }
-
- @threadSafety("app")
--cmd void vkCmdBindDynamicViewportState(
-+cmd void vkCmdSetViewport(
- VkCmdBuffer cmdBuffer,
-- VkDynamicViewportState dynamicViewportState) {
-+ u32 viewportCount,
-+ const VkViewport* pViewports) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
-- dynamicViewportStateObject := GetDynamicViewportState(dynamicViewportState)
-- assert(cmdBufferObject.device == dynamicViewportStateObject.device)
-+ queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
-+ cmdBufferObject.queueFlags = queueFlags
-+}
-
-+@threadSafety("app")
-+cmd void vkCmdSetScissor(
-+ VkCmdBuffer cmdBuffer,
-+ u32 scissorCount,
-+ const VkRect2D* pScissors) {
-+ cmdBufferObject := GetCmdBuffer(cmdBuffer)
- queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
- cmdBufferObject.queueFlags = queueFlags
- }
-
- @threadSafety("app")
--cmd void vkCmdBindDynamicRasterState(
-+cmd void vkCmdSetLineWidth(
- VkCmdBuffer cmdBuffer,
-- VkDynamicRasterState dynamicRasterState) {
-+ f32 lineWidth) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
-- dynamicRasterStateObject := GetDynamicRasterState(dynamicRasterState)
-- assert(cmdBufferObject.device == dynamicRasterStateObject.device)
-+ queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
-+ cmdBufferObject.queueFlags = queueFlags
-+}
-
-+@threadSafety("app")
-+cmd void vkCmdSetDepthBias(
-+ VkCmdBuffer cmdBuffer,
-+ f32 depthBias,
-+ f32 depthBiasClamp,
-+ f32 slopeScaledDepthBias) {
-+ cmdBufferObject := GetCmdBuffer(cmdBuffer)
- queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
- cmdBufferObject.queueFlags = queueFlags
- }
-
- @threadSafety("app")
--cmd void vkCmdBindDynamicColorBlendState(
-+cmd void vkCmdSetBlendConstants(
- VkCmdBuffer cmdBuffer,
-- VkDynamicColorBlendState dynamicColorBlendState) {
-+ // TODO(jessehall): apic only supports 'const' on pointer types. Using
-+ // an annotation as a quick hack to pass this to the template without
-+ // having to modify the AST and semantic model.
-+ @readonly f32[4] blendConst) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
-- dynamicColorBlendStateObject := GetDynamicColorBlendState(dynamicColorBlendState)
-- assert(cmdBufferObject.device == dynamicColorBlendStateObject.device)
-+ queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
-+ cmdBufferObject.queueFlags = queueFlags
-+}
-
-+@threadSafety("app")
-+cmd void vkCmdSetDepthBounds(
-+ VkCmdBuffer cmdBuffer,
-+ f32 minDepthBounds,
-+ f32 maxDepthBounds) {
-+ cmdBufferObject := GetCmdBuffer(cmdBuffer)
- queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
- cmdBufferObject.queueFlags = queueFlags
- }
-
- @threadSafety("app")
--cmd void vkCmdBindDynamicDepthStencilState(
-+cmd void vkCmdSetStencilCompareMask(
- VkCmdBuffer cmdBuffer,
-- VkDynamicDepthStencilState dynamicDepthStencilState) {
-+ VkStencilFaceFlags faceMask,
-+ u32 stencilCompareMask) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
-- dynamicDepthStencilStateObject := GetDynamicDepthStencilState(dynamicDepthStencilState)
-- assert(cmdBufferObject.device == dynamicDepthStencilStateObject.device)
-+ queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
-+ cmdBufferObject.queueFlags = queueFlags
-+}
-
-+@threadSafety("app")
-+cmd void vkCmdSetStencilWriteMask(
-+ VkCmdBuffer cmdBuffer,
-+ VkStencilFaceFlags faceMask,
-+ u32 stencilWriteMask) {
-+ cmdBufferObject := GetCmdBuffer(cmdBuffer)
-+ queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
-+ cmdBufferObject.queueFlags = queueFlags
-+}
-+
-+@threadSafety("app")
-+cmd void vkCmdSetStencilReference(
-+ VkCmdBuffer cmdBuffer,
-+ VkStencilFaceFlags faceMask,
-+ u32 stencilReference) {
-+ cmdBufferObject := GetCmdBuffer(cmdBuffer)
- queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
- cmdBufferObject.queueFlags = queueFlags
- }
-@@ -3771,7 +3604,7 @@ cmd void vkCmdBindDescriptorSets(
- cmd void vkCmdBindIndexBuffer(
- VkCmdBuffer cmdBuffer,
- VkBuffer buffer,
-- platform.VkDeviceSize offset,
-+ VkDeviceSize offset,
- VkIndexType indexType) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
- bufferObject := GetBuffer(buffer)
-@@ -3789,7 +3622,7 @@ cmd void vkCmdBindVertexBuffers(
- u32 startBinding,
- u32 bindingCount,
- const VkBuffer* pBuffers,
-- const platform.VkDeviceSize* pOffsets) {
-+ const VkDeviceSize* pOffsets) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
-
- // TODO: check if not [startBinding:startBinding+bindingCount]
-@@ -3811,10 +3644,10 @@ cmd void vkCmdBindVertexBuffers(
- @threadSafety("app")
- cmd void vkCmdDraw(
- VkCmdBuffer cmdBuffer,
-- u32 firstVertex,
- u32 vertexCount,
-- u32 firstInstance,
-- u32 instanceCount) {
-+ u32 instanceCount,
-+ u32 firstVertex,
-+ u32 firstInstance) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
-
- queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
-@@ -3824,11 +3657,11 @@ cmd void vkCmdDraw(
- @threadSafety("app")
- cmd void vkCmdDrawIndexed(
- VkCmdBuffer cmdBuffer,
-- u32 firstIndex,
- u32 indexCount,
-+ u32 instanceCount,
-+ u32 firstIndex,
- s32 vertexOffset,
-- u32 firstInstance,
-- u32 instanceCount) {
-+ u32 firstInstance) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
-
- queueFlags := cmdBufferObject.queueFlags | VK_QUEUE_GRAPHICS_BIT
-@@ -3839,7 +3672,7 @@ cmd void vkCmdDrawIndexed(
- cmd void vkCmdDrawIndirect(
- VkCmdBuffer cmdBuffer,
- VkBuffer buffer,
-- platform.VkDeviceSize offset,
-+ VkDeviceSize offset,
- u32 count,
- u32 stride) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
-@@ -3856,7 +3689,7 @@ cmd void vkCmdDrawIndirect(
- cmd void vkCmdDrawIndexedIndirect(
- VkCmdBuffer cmdBuffer,
- VkBuffer buffer,
-- platform.VkDeviceSize offset,
-+ VkDeviceSize offset,
- u32 count,
- u32 stride) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
-@@ -3885,7 +3718,7 @@ cmd void vkCmdDispatch(
- cmd void vkCmdDispatchIndirect(
- VkCmdBuffer cmdBuffer,
- VkBuffer buffer,
-- platform.VkDeviceSize offset) {
-+ VkDeviceSize offset) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
- bufferObject := GetBuffer(buffer)
- assert(cmdBufferObject.device == bufferObject.device)
-@@ -4032,8 +3865,8 @@ cmd void vkCmdCopyImageToBuffer(
- cmd void vkCmdUpdateBuffer(
- VkCmdBuffer cmdBuffer,
- VkBuffer destBuffer,
-- platform.VkDeviceSize destOffset,
-- platform.VkDeviceSize dataSize,
-+ VkDeviceSize destOffset,
-+ VkDeviceSize dataSize,
- const u32* pData) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
- destBufferObject := GetBuffer(destBuffer)
-@@ -4051,8 +3884,8 @@ cmd void vkCmdUpdateBuffer(
- cmd void vkCmdFillBuffer(
- VkCmdBuffer cmdBuffer,
- VkBuffer destBuffer,
-- platform.VkDeviceSize destOffset,
-- platform.VkDeviceSize fillSize,
-+ VkDeviceSize destOffset,
-+ VkDeviceSize fillSize,
- u32 data) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
- destBufferObject := GetBuffer(destBuffer)
-@@ -4090,8 +3923,7 @@ cmd void vkCmdClearDepthStencilImage(
- VkCmdBuffer cmdBuffer,
- VkImage image,
- VkImageLayout imageLayout,
-- f32 depth,
-- u32 stencil,
-+ const VkClearDepthStencilValue* pDepthStencil,
- u32 rangeCount,
- const VkImageSubresourceRange* pRanges) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
-@@ -4131,10 +3963,9 @@ cmd void vkCmdClearColorAttachment(
- @threadSafety("app")
- cmd void vkCmdClearDepthStencilAttachment(
- VkCmdBuffer cmdBuffer,
-- VkImageAspectFlags imageAspectMask,
-+ VkImageAspectFlags aspectMask,
- VkImageLayout imageLayout,
-- f32 depth,
-- u32 stencil,
-+ const VkClearDepthStencilValue* pDepthStencil,
- u32 rectCount,
- const VkRect3D* pRects) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
-@@ -4238,7 +4069,7 @@ cmd void vkCmdPipelineBarrier(
- VkCmdBuffer cmdBuffer,
- VkPipelineStageFlags srcStageMask,
- VkPipelineStageFlags destStageMask,
-- platform.VkBool32 byRegion,
-+ VkBool32 byRegion,
- u32 memBarrierCount,
- const void* const* ppMemBarriers) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
-@@ -4300,7 +4131,7 @@ cmd void vkCmdWriteTimestamp(
- VkCmdBuffer cmdBuffer,
- VkTimestampType timestampType,
- VkBuffer destBuffer,
-- platform.VkDeviceSize destOffset) {
-+ VkDeviceSize destOffset) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
- destBufferObject := GetBuffer(destBuffer)
- assert(cmdBufferObject.device == destBufferObject.device)
-@@ -4313,8 +4144,8 @@ cmd void vkCmdCopyQueryPoolResults(
- u32 startQuery,
- u32 queryCount,
- VkBuffer destBuffer,
-- platform.VkDeviceSize destOffset,
-- platform.VkDeviceSize destStride,
-+ VkDeviceSize destOffset,
-+ VkDeviceSize destStride,
- VkQueryResultFlags flags) {
- cmdBufferObject := GetCmdBuffer(cmdBuffer)
- queryPoolObject := GetQueryPool(queryPool)
-@@ -4407,7 +4238,6 @@ StateObject State
- map!(VkBufferView, ref!BufferViewObject) BufferViews
- map!(VkImage, ref!ImageObject) Images
- map!(VkImageView, ref!ImageViewObject) ImageViews
-- map!(VkAttachmentView, ref!AttachmentViewObject) AttachmentViews
- map!(VkShaderModule, ref!ShaderModuleObject) ShaderModules
- map!(VkShader, ref!ShaderObject) Shaders
- map!(VkPipeline, ref!PipelineObject) Pipelines
-@@ -4416,10 +4246,6 @@ StateObject State
- map!(VkDescriptorSet, ref!DescriptorSetObject) DescriptorSets
- map!(VkDescriptorSetLayout, ref!DescriptorSetLayoutObject) DescriptorSetLayouts
- map!(VkDescriptorPool, ref!DescriptorPoolObject) DescriptorPools
-- map!(VkDynamicViewportState, ref!DynamicViewportStateObject) DynamicViewportStates
-- map!(VkDynamicRasterState, ref!DynamicRasterStateObject) DynamicRasterStates
-- map!(VkDynamicColorBlendState, ref!DynamicColorBlendStateObject) DynamicColorBlendStates
-- map!(VkDynamicDepthStencilState, ref!DynamicDepthStencilStateObject) DynamicDepthStencilStates
- map!(VkFence, ref!FenceObject) Fences
- map!(VkSemaphore, ref!SemaphoreObject) Semaphores
- map!(VkEvent, ref!EventObject) Events
-@@ -4454,15 +4280,15 @@ StateObject State
-
- @internal class DeviceMemoryObject {
- VkDevice device
-- platform.VkDeviceSize allocationSize
-- map!(u64, platform.VkDeviceSize) boundObjects
-+ VkDeviceSize allocationSize
-+ map!(u64, VkDeviceSize ) boundObjects
- map!(VkCmdBuffer, VkCmdBuffer) boundCommandBuffers
- }
-
- @internal class BufferObject {
- VkDevice device
- VkDeviceMemory mem
-- platform.VkDeviceSize memOffset
-+ VkDeviceSize memOffset
- }
-
- @internal class BufferViewObject {
-@@ -4473,7 +4299,7 @@ StateObject State
- @internal class ImageObject {
- VkDevice device
- VkDeviceMemory mem
-- platform.VkDeviceSize memOffset
-+ VkDeviceSize memOffset
- }
-
- @internal class ImageViewObject {
-@@ -4481,11 +4307,6 @@ StateObject State
- VkImage image
- }
-
--@internal class AttachmentViewObject {
-- VkDevice device
-- VkImage image
--}
--
- @internal class ShaderObject {
- VkDevice device
- }
-@@ -4518,22 +4339,6 @@ StateObject State
- VkDevice device
- }
-
--@internal class DynamicViewportStateObject {
-- VkDevice device
--}
--
--@internal class DynamicRasterStateObject {
-- VkDevice device
--}
--
--@internal class DynamicColorBlendStateObject {
-- VkDevice device
--}
--
--@internal class DynamicDepthStencilStateObject {
-- VkDevice device
--}
--
- @internal class FenceObject {
- VkDevice device
- bool signaled
-@@ -4617,11 +4422,6 @@ macro ref!ImageViewObject GetImageView(VkImageView imageView) {
- return State.ImageViews[imageView]
- }
-
--macro ref!AttachmentViewObject GetAttachmentView(VkAttachmentView attachmentView) {
-- assert(attachmentView in State.AttachmentViews)
-- return State.AttachmentViews[attachmentView]
--}
--
- macro ref!ShaderObject GetShader(VkShader shader) {
- assert(shader in State.Shaders)
- return State.Shaders[shader]
-@@ -4662,26 +4462,6 @@ macro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool
- return State.DescriptorPools[descriptorPool]
- }
-
--macro ref!DynamicViewportStateObject GetDynamicViewportState(VkDynamicViewportState dynamicViewportState) {
-- assert(dynamicViewportState in State.DynamicViewportStates)
-- return State.DynamicViewportStates[dynamicViewportState]
--}
--
--macro ref!DynamicRasterStateObject GetDynamicRasterState(VkDynamicRasterState dynamicRasterState) {
-- assert(dynamicRasterState in State.DynamicRasterStates)
-- return State.DynamicRasterStates[dynamicRasterState]
--}
--
--macro ref!DynamicColorBlendStateObject GetDynamicColorBlendState(VkDynamicColorBlendState dynamicColorBlendState) {
-- assert(dynamicColorBlendState in State.DynamicColorBlendStates)
-- return State.DynamicColorBlendStates[dynamicColorBlendState]
--}
--
--macro ref!DynamicDepthStencilStateObject GetDynamicDepthStencilState(VkDynamicDepthStencilState dynamicDepthStencilState) {
-- assert(dynamicDepthStencilState in State.DynamicDepthStencilStates)
-- return State.DynamicDepthStencilStates[dynamicDepthStencilState]
--}
--
- macro ref!FenceObject GetFence(VkFence fence) {
- assert(fence in State.Fences)
- return State.Fences[fence]
-diff --git a/vulkan/include/hardware/hwvulkan.h b/vulkan/include/hardware/hwvulkan.h
-index 91dd41e..e973f46 100644
---- a/vulkan/include/hardware/hwvulkan.h
-+++ b/vulkan/include/hardware/hwvulkan.h
-@@ -61,7 +61,8 @@ typedef union {
- typedef struct hwvulkan_device_t {
- struct hw_device_t common;
-
-- PFN_vkGetGlobalExtensionProperties GetGlobalExtensionProperties;
-+ PFN_vkEnumerateInstanceExtensionProperties
-+ EnumerateInstanceExtensionProperties;
- PFN_vkCreateInstance CreateInstance;
- PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
- } hwvulkan_device_t;
-diff --git a/vulkan/include/vulkan/vk_platform.h b/vulkan/include/vulkan/vk_platform.h
-index 7ba8d77..969e532 100644
---- a/vulkan/include/vulkan/vk_platform.h
-+++ b/vulkan/include/vulkan/vk_platform.h
-@@ -67,22 +67,6 @@ extern "C"
- #endif
- #endif // !defined(VK_NO_STDINT_H)
-
--typedef uint64_t VkDeviceSize;
--typedef uint32_t VkBool32;
--
--typedef uint32_t VkSampleMask;
--typedef uint32_t VkFlags;
--
--#if (UINTPTR_MAX >= UINT64_MAX)
-- #define VK_UINTPTRLEAST64_MAX UINTPTR_MAX
--
-- typedef uintptr_t VkUintPtrLeast64;
--#else
-- #define VK_UINTPTRLEAST64_MAX UINT64_MAX
--
-- typedef uint64_t VkUintPtrLeast64;
--#endif
--
- #ifdef __cplusplus
- } // extern "C"
- #endif // __cplusplus
-diff --git a/vulkan/include/vulkan/vulkan.h b/vulkan/include/vulkan/vulkan.h
-index 9877233..03bcefe 100644
---- a/vulkan/include/vulkan/vulkan.h
-+++ b/vulkan/include/vulkan/vulkan.h
-@@ -41,14 +41,21 @@ extern "C" {
- ((major << 22) | (minor << 12) | patch)
-
- // Vulkan API version supported by this file
--#define VK_API_VERSION VK_MAKE_VERSION(0, 138, 2)
-+#define VK_API_VERSION VK_MAKE_VERSION(0, 170, 2)
-+
-+
-+#if defined(__cplusplus) && (_MSC_VER >= 1800 || __cplusplus >= 201103L)
-+ #define VK_NULL_HANDLE nullptr
-+#else
-+ #define VK_NULL_HANDLE 0
-+#endif
-
-
- #define VK_DEFINE_HANDLE(obj) typedef struct obj##_T* obj;
-
-
- #if defined(__cplusplus)
-- #if (_MSC_VER >= 1800 || __cplusplus >= 201103L)
-+ #if ((defined(_MSC_VER) && _MSC_VER >= 1800) || __cplusplus >= 201103L)
- // The bool operator only works if there are no implicit conversions from an obj to
- // a bool-compatible type, which can then be used to unintentionally violate type safety.
- // C++11 and above supports the "explicit" keyword on conversion operators to stop this
-@@ -56,13 +63,18 @@ extern "C" {
- // the object handle as a bool in expressions like:
- // if (obj) vkDestroy(obj);
- #define VK_NONDISP_HANDLE_OPERATOR_BOOL() explicit operator bool() const { return handle != 0; }
-+ #define VK_NONDISP_HANDLE_CONSTRUCTOR_FROM_UINT64(obj) \
-+ explicit obj(uint64_t x) : handle(x) { } \
-+ obj(decltype(nullptr)) : handle(0) { }
- #else
- #define VK_NONDISP_HANDLE_OPERATOR_BOOL()
-+ #define VK_NONDISP_HANDLE_CONSTRUCTOR_FROM_UINT64(obj) \
-+ obj(uint64_t x) : handle(x) { }
- #endif
- #define VK_DEFINE_NONDISP_HANDLE(obj) \
- struct obj { \
- obj() : handle(0) { } \
-- obj(uint64_t x) : handle(x) { } \
-+ VK_NONDISP_HANDLE_CONSTRUCTOR_FROM_UINT64(obj) \
- obj& operator =(uint64_t x) { handle = x; return *this; } \
- bool operator==(const obj& other) const { return handle == other.handle; } \
- bool operator!=(const obj& other) const { return handle != other.handle; } \
-@@ -76,20 +88,10 @@ extern "C" {
-
-
-
--#define VK_LOD_CLAMP_NONE MAX_FLOAT
--#define VK_LAST_MIP_LEVEL UINT32_MAX
--#define VK_LAST_ARRAY_SLICE UINT32_MAX
--#define VK_WHOLE_SIZE UINT64_MAX
--#define VK_ATTACHMENT_UNUSED UINT32_MAX
--#define VK_TRUE 1
--#define VK_FALSE 0
--#define VK_NULL_HANDLE 0
--#define VK_MAX_PHYSICAL_DEVICE_NAME 256
--#define VK_UUID_LENGTH 16
--#define VK_MAX_MEMORY_TYPES 32
--#define VK_MAX_MEMORY_HEAPS 16
--#define VK_MAX_EXTENSION_NAME 256
--#define VK_MAX_DESCRIPTION 256
-+typedef uint32_t VkBool32;
-+typedef uint32_t VkFlags;
-+typedef uint64_t VkDeviceSize;
-+typedef uint32_t VkSampleMask;
-
- VK_DEFINE_HANDLE(VkInstance)
- VK_DEFINE_HANDLE(VkPhysicalDevice)
-@@ -105,7 +107,6 @@ VK_DEFINE_NONDISP_HANDLE(VkEvent)
- VK_DEFINE_NONDISP_HANDLE(VkQueryPool)
- VK_DEFINE_NONDISP_HANDLE(VkBufferView)
- VK_DEFINE_NONDISP_HANDLE(VkImageView)
--VK_DEFINE_NONDISP_HANDLE(VkAttachmentView)
- VK_DEFINE_NONDISP_HANDLE(VkShaderModule)
- VK_DEFINE_NONDISP_HANDLE(VkShader)
- VK_DEFINE_NONDISP_HANDLE(VkPipelineCache)
-@@ -116,13 +117,25 @@ VK_DEFINE_NONDISP_HANDLE(VkDescriptorSetLayout)
- VK_DEFINE_NONDISP_HANDLE(VkSampler)
- VK_DEFINE_NONDISP_HANDLE(VkDescriptorPool)
- VK_DEFINE_NONDISP_HANDLE(VkDescriptorSet)
--VK_DEFINE_NONDISP_HANDLE(VkDynamicViewportState)
--VK_DEFINE_NONDISP_HANDLE(VkDynamicRasterState)
--VK_DEFINE_NONDISP_HANDLE(VkDynamicColorBlendState)
--VK_DEFINE_NONDISP_HANDLE(VkDynamicDepthStencilState)
- VK_DEFINE_NONDISP_HANDLE(VkFramebuffer)
- VK_DEFINE_NONDISP_HANDLE(VkCmdPool)
-
-+#define VK_LOD_CLAMP_NONE 1000.0f
-+#define VK_REMAINING_MIP_LEVELS (~0U)
-+#define VK_REMAINING_ARRAY_LAYERS (~0U)
-+#define VK_WHOLE_SIZE (~0ULL)
-+#define VK_ATTACHMENT_UNUSED (~0U)
-+#define VK_TRUE 1
-+#define VK_FALSE 0
-+#define VK_QUEUE_FAMILY_IGNORED (~0U)
-+#define VK_SUBPASS_EXTERNAL (~0U)
-+#define VK_MAX_PHYSICAL_DEVICE_NAME 256
-+#define VK_UUID_LENGTH 16
-+#define VK_MAX_MEMORY_TYPES 32
-+#define VK_MAX_MEMORY_HEAPS 16
-+#define VK_MAX_EXTENSION_NAME 256
-+#define VK_MAX_DESCRIPTION 256
-+
-
- typedef enum {
- VK_SUCCESS = 0,
-@@ -132,41 +145,17 @@ typedef enum {
- VK_EVENT_SET = 4,
- VK_EVENT_RESET = 5,
- VK_INCOMPLETE = 6,
-- VK_ERROR_UNKNOWN = -1,
-- VK_ERROR_UNAVAILABLE = -2,
-+ VK_ERROR_OUT_OF_HOST_MEMORY = -1,
-+ VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
- VK_ERROR_INITIALIZATION_FAILED = -3,
-- VK_ERROR_OUT_OF_HOST_MEMORY = -4,
-- VK_ERROR_OUT_OF_DEVICE_MEMORY = -5,
-- VK_ERROR_DEVICE_ALREADY_CREATED = -6,
-- VK_ERROR_DEVICE_LOST = -7,
-- VK_ERROR_INVALID_POINTER = -8,
-- VK_ERROR_INVALID_VALUE = -9,
-- VK_ERROR_INVALID_HANDLE = -10,
-- VK_ERROR_INVALID_ORDINAL = -11,
-- VK_ERROR_INVALID_MEMORY_SIZE = -12,
-- VK_ERROR_INVALID_EXTENSION = -13,
-- VK_ERROR_INVALID_FLAGS = -14,
-- VK_ERROR_INVALID_ALIGNMENT = -15,
-- VK_ERROR_INVALID_FORMAT = -16,
-- VK_ERROR_INVALID_IMAGE = -17,
-- VK_ERROR_INVALID_DESCRIPTOR_SET_DATA = -18,
-- VK_ERROR_INVALID_QUEUE_TYPE = -19,
-- VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION = -20,
-- VK_ERROR_BAD_SHADER_CODE = -21,
-- VK_ERROR_BAD_PIPELINE_DATA = -22,
-- VK_ERROR_NOT_MAPPABLE = -23,
-- VK_ERROR_MEMORY_MAP_FAILED = -24,
-- VK_ERROR_MEMORY_UNMAP_FAILED = -25,
-- VK_ERROR_INCOMPATIBLE_DEVICE = -26,
-- VK_ERROR_INCOMPATIBLE_DRIVER = -27,
-- VK_ERROR_INCOMPLETE_COMMAND_BUFFER = -28,
-- VK_ERROR_BUILDING_COMMAND_BUFFER = -29,
-- VK_ERROR_MEMORY_NOT_BOUND = -30,
-- VK_ERROR_INCOMPATIBLE_QUEUE = -31,
-- VK_ERROR_INVALID_LAYER = -32,
-- VK_RESULT_BEGIN_RANGE = VK_ERROR_INVALID_LAYER,
-+ VK_ERROR_DEVICE_LOST = -4,
-+ VK_ERROR_MEMORY_MAP_FAILED = -5,
-+ VK_ERROR_LAYER_NOT_PRESENT = -6,
-+ VK_ERROR_EXTENSION_NOT_PRESENT = -7,
-+ VK_ERROR_INCOMPATIBLE_DRIVER = -8,
-+ VK_RESULT_BEGIN_RANGE = VK_ERROR_INCOMPATIBLE_DRIVER,
- VK_RESULT_END_RANGE = VK_INCOMPLETE,
-- VK_RESULT_NUM = (VK_INCOMPLETE - VK_ERROR_INVALID_LAYER + 1),
-+ VK_RESULT_NUM = (VK_INCOMPLETE - VK_ERROR_INCOMPATIBLE_DRIVER + 1),
- VK_RESULT_MAX_ENUM = 0x7FFFFFFF
- } VkResult;
-
-@@ -175,55 +164,52 @@ typedef enum {
- VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 1,
- VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO = 2,
- VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 3,
-- VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO = 4,
-- VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 5,
-- VK_STRUCTURE_TYPE_SHADER_CREATE_INFO = 6,
-- VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 7,
-- VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 8,
-- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 9,
-- VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO = 10,
-- VK_STRUCTURE_TYPE_DYNAMIC_RASTER_STATE_CREATE_INFO = 11,
-- VK_STRUCTURE_TYPE_DYNAMIC_COLOR_BLEND_STATE_CREATE_INFO = 12,
-- VK_STRUCTURE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE_CREATE_INFO = 13,
-- VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO = 14,
-- VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 15,
-- VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 16,
-- VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 17,
-- VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 18,
-- VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 19,
-- VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 20,
-- VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 21,
-- VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 22,
-- VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 23,
-- VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 24,
-- VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO = 25,
-- VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 26,
-- VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 27,
-- VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 28,
-- VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 29,
-- VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 30,
-- VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 31,
-- VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 32,
-- VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO = 33,
-- VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 34,
-- VK_STRUCTURE_TYPE_MEMORY_BARRIER = 35,
-- VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 36,
-- VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 37,
-- VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 38,
-- VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 39,
-- VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 40,
-- VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 41,
-- VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 42,
-- VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 43,
-- VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 44,
-- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION = 45,
-- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION = 46,
-- VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY = 47,
-- VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 48,
-- VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO = 49,
-+ VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 4,
-+ VK_STRUCTURE_TYPE_SHADER_CREATE_INFO = 5,
-+ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 6,
-+ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 7,
-+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 8,
-+ VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO = 9,
-+ VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
-+ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 11,
-+ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 12,
-+ VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 13,
-+ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 14,
-+ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 15,
-+ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 16,
-+ VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 17,
-+ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 18,
-+ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 19,
-+ VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO = 20,
-+ VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 21,
-+ VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 22,
-+ VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 23,
-+ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 24,
-+ VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 25,
-+ VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 26,
-+ VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 27,
-+ VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO = 28,
-+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 29,
-+ VK_STRUCTURE_TYPE_MEMORY_BARRIER = 30,
-+ VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 31,
-+ VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 32,
-+ VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
-+ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 34,
-+ VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 35,
-+ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 36,
-+ VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 37,
-+ VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 38,
-+ VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 39,
-+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION = 40,
-+ VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION = 41,
-+ VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY = 42,
-+ VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
-+ VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO = 44,
-+ VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 45,
-+ VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 46,
- VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
-- VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO,
-- VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
-+ VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
-+ VK_STRUCTURE_TYPE_NUM = (VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
- VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkStructureType;
-
-@@ -330,7 +316,7 @@ typedef enum {
- VK_FORMAT_R11G11B10_UFLOAT = 87,
- VK_FORMAT_R9G9B9E5_UFLOAT = 88,
- VK_FORMAT_D16_UNORM = 89,
-- VK_FORMAT_D24_UNORM = 90,
-+ VK_FORMAT_D24_UNORM_X8 = 90,
- VK_FORMAT_D32_SFLOAT = 91,
- VK_FORMAT_S8_UINT = 92,
- VK_FORMAT_D16_UNORM_S8_UINT = 93,
-@@ -481,13 +467,20 @@ typedef enum {
- } VkSharingMode;
-
- typedef enum {
-- VK_BUFFER_VIEW_TYPE_RAW = 0,
-- VK_BUFFER_VIEW_TYPE_FORMATTED = 1,
-- VK_BUFFER_VIEW_TYPE_BEGIN_RANGE = VK_BUFFER_VIEW_TYPE_RAW,
-- VK_BUFFER_VIEW_TYPE_END_RANGE = VK_BUFFER_VIEW_TYPE_FORMATTED,
-- VK_BUFFER_VIEW_TYPE_NUM = (VK_BUFFER_VIEW_TYPE_FORMATTED - VK_BUFFER_VIEW_TYPE_RAW + 1),
-- VK_BUFFER_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
--} VkBufferViewType;
-+ VK_IMAGE_LAYOUT_UNDEFINED = 0,
-+ VK_IMAGE_LAYOUT_GENERAL = 1,
-+ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
-+ VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
-+ VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
-+ VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
-+ VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL = 6,
-+ VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL = 7,
-+ VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
-+ VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
-+ VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
-+ VK_IMAGE_LAYOUT_NUM = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
-+ VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
-+} VkImageLayout;
-
- typedef enum {
- VK_IMAGE_VIEW_TYPE_1D = 0,
-@@ -678,6 +671,22 @@ typedef enum {
- } VkBlendOp;
-
- typedef enum {
-+ VK_DYNAMIC_STATE_VIEWPORT = 0,
-+ VK_DYNAMIC_STATE_SCISSOR = 1,
-+ VK_DYNAMIC_STATE_LINE_WIDTH = 2,
-+ VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
-+ VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
-+ VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
-+ VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
-+ VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
-+ VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
-+ VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT,
-+ VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
-+ VK_DYNAMIC_STATE_NUM = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
-+ VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
-+} VkDynamicState;
-+
-+typedef enum {
- VK_TEX_FILTER_NEAREST = 0,
- VK_TEX_FILTER_LINEAR = 1,
- VK_TEX_FILTER_BEGIN_RANGE = VK_TEX_FILTER_NEAREST,
-@@ -697,16 +706,16 @@ typedef enum {
- } VkTexMipmapMode;
-
- typedef enum {
-- VK_TEX_ADDRESS_WRAP = 0,
-- VK_TEX_ADDRESS_MIRROR = 1,
-- VK_TEX_ADDRESS_CLAMP = 2,
-- VK_TEX_ADDRESS_MIRROR_ONCE = 3,
-- VK_TEX_ADDRESS_CLAMP_BORDER = 4,
-- VK_TEX_ADDRESS_BEGIN_RANGE = VK_TEX_ADDRESS_WRAP,
-- VK_TEX_ADDRESS_END_RANGE = VK_TEX_ADDRESS_CLAMP_BORDER,
-- VK_TEX_ADDRESS_NUM = (VK_TEX_ADDRESS_CLAMP_BORDER - VK_TEX_ADDRESS_WRAP + 1),
-+ VK_TEX_ADDRESS_MODE_WRAP = 0,
-+ VK_TEX_ADDRESS_MODE_MIRROR = 1,
-+ VK_TEX_ADDRESS_MODE_CLAMP = 2,
-+ VK_TEX_ADDRESS_MODE_MIRROR_ONCE = 3,
-+ VK_TEX_ADDRESS_MODE_CLAMP_BORDER = 4,
-+ VK_TEX_ADDRESS_BEGIN_RANGE = VK_TEX_ADDRESS_MODE_WRAP,
-+ VK_TEX_ADDRESS_END_RANGE = VK_TEX_ADDRESS_MODE_CLAMP_BORDER,
-+ VK_TEX_ADDRESS_NUM = (VK_TEX_ADDRESS_MODE_CLAMP_BORDER - VK_TEX_ADDRESS_MODE_WRAP + 1),
- VK_TEX_ADDRESS_MAX_ENUM = 0x7FFFFFFF
--} VkTexAddress;
-+} VkTexAddressMode;
-
- typedef enum {
- VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
-@@ -758,21 +767,6 @@ typedef enum {
- } VkDescriptorSetUsage;
-
- typedef enum {
-- VK_IMAGE_LAYOUT_UNDEFINED = 0,
-- VK_IMAGE_LAYOUT_GENERAL = 1,
-- VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
-- VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
-- VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
-- VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
-- VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL = 6,
-- VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL = 7,
-- VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
-- VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL,
-- VK_IMAGE_LAYOUT_NUM = (VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL - VK_IMAGE_LAYOUT_UNDEFINED + 1),
-- VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
--} VkImageLayout;
--
--typedef enum {
- VK_ATTACHMENT_LOAD_OP_LOAD = 0,
- VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
- VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
-@@ -848,24 +842,44 @@ typedef enum {
- VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
- VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
- VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
-- VK_FORMAT_FEATURE_CONVERSION_BIT = 0x00000400,
-+ VK_FORMAT_FEATURE_BLIT_SOURCE_BIT = 0x00000400,
-+ VK_FORMAT_FEATURE_BLIT_DESTINATION_BIT = 0x00000800,
- } VkFormatFeatureFlagBits;
- typedef VkFlags VkFormatFeatureFlags;
-
- typedef enum {
-- VK_IMAGE_USAGE_GENERAL = 0,
- VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT = 0x00000001,
- VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT = 0x00000002,
- VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
- VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
- VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
-- VK_IMAGE_USAGE_DEPTH_STENCIL_BIT = 0x00000020,
-+ VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
- VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
- VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
- } VkImageUsageFlagBits;
- typedef VkFlags VkImageUsageFlags;
-
- typedef enum {
-+ VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
-+ VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
-+ VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
-+ VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
-+ VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
-+} VkImageCreateFlagBits;
-+typedef VkFlags VkImageCreateFlags;
-+
-+typedef enum {
-+ VK_SAMPLE_COUNT_1_BIT = 0x00000001,
-+ VK_SAMPLE_COUNT_2_BIT = 0x00000002,
-+ VK_SAMPLE_COUNT_4_BIT = 0x00000004,
-+ VK_SAMPLE_COUNT_8_BIT = 0x00000008,
-+ VK_SAMPLE_COUNT_16_BIT = 0x00000010,
-+ VK_SAMPLE_COUNT_32_BIT = 0x00000020,
-+ VK_SAMPLE_COUNT_64_BIT = 0x00000040,
-+} VkSampleCountFlagBits;
-+typedef VkFlags VkSampleCountFlags;
-+
-+typedef enum {
- VK_QUEUE_GRAPHICS_BIT = 0x00000001,
- VK_QUEUE_COMPUTE_BIT = 0x00000002,
- VK_QUEUE_DMA_BIT = 0x00000004,
-@@ -885,14 +899,9 @@ typedef enum {
- typedef VkFlags VkMemoryPropertyFlags;
-
- typedef enum {
-- VK_MEMORY_HEAP_HOST_LOCAL = 0x00000001,
-+ VK_MEMORY_HEAP_HOST_LOCAL_BIT = 0x00000001,
- } VkMemoryHeapFlagBits;
- typedef VkFlags VkMemoryHeapFlags;
--
--typedef enum {
-- VK_DEVICE_CREATE_VALIDATION_BIT = 0x00000001,
--} VkDeviceCreateFlagBits;
--typedef VkFlags VkDeviceCreateFlags;
- typedef VkFlags VkMemoryMapFlags;
-
- typedef enum {
-@@ -939,7 +948,6 @@ typedef enum {
- typedef VkFlags VkQueryResultFlags;
-
- typedef enum {
-- VK_BUFFER_USAGE_GENERAL = 0,
- VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT = 0x00000001,
- VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT = 0x00000002,
- VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
-@@ -953,27 +961,25 @@ typedef enum {
- typedef VkFlags VkBufferUsageFlags;
-
- typedef enum {
-- VK_BUFFER_CREATE_SPARSE_BIT = 0x00000001,
-+ VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
- VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
- VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
- } VkBufferCreateFlagBits;
- typedef VkFlags VkBufferCreateFlags;
-
- typedef enum {
-- VK_IMAGE_CREATE_SPARSE_BIT = 0x00000001,
-- VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
-- VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
-- VK_IMAGE_CREATE_INVARIANT_DATA_BIT = 0x00000008,
-- VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000010,
-- VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000020,
--} VkImageCreateFlagBits;
--typedef VkFlags VkImageCreateFlags;
-+ VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
-+ VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
-+ VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
-+ VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
-+} VkImageAspectFlagBits;
-+typedef VkFlags VkImageAspectFlags;
-
- typedef enum {
-- VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_DEPTH_BIT = 0x00000001,
-- VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_STENCIL_BIT = 0x00000002,
--} VkAttachmentViewCreateFlagBits;
--typedef VkFlags VkAttachmentViewCreateFlags;
-+ VK_IMAGE_VIEW_CREATE_READ_ONLY_DEPTH_BIT = 0x00000001,
-+ VK_IMAGE_VIEW_CREATE_READ_ONLY_STENCIL_BIT = 0x00000002,
-+} VkImageViewCreateFlagBits;
-+typedef VkFlags VkImageViewCreateFlags;
- typedef VkFlags VkShaderModuleCreateFlags;
- typedef VkFlags VkShaderCreateFlags;
-
-@@ -1004,6 +1010,11 @@ typedef enum {
- typedef VkFlags VkShaderStageFlags;
-
- typedef enum {
-+ VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
-+} VkAttachmentDescriptionFlagBits;
-+typedef VkFlags VkAttachmentDescriptionFlags;
-+
-+typedef enum {
- VK_SUBPASS_DESCRIPTION_NO_OVERDRAW_BIT = 0x00000001,
- } VkSubpassDescriptionFlagBits;
- typedef VkFlags VkSubpassDescriptionFlags;
-@@ -1022,10 +1033,9 @@ typedef enum {
- VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
- VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
- VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
-- VK_PIPELINE_STAGE_TRANSITION_BIT = 0x00002000,
-- VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
-+ VK_PIPELINE_STAGE_HOST_BIT = 0x00002000,
- VK_PIPELINE_STAGE_ALL_GRAPHICS = 0x000007FF,
-- VK_PIPELINE_STAGE_ALL_GPU_COMMANDS = 0x00003FFF,
-+ VK_PIPELINE_STAGE_ALL_GPU_COMMANDS = 0x00001FFF,
- } VkPipelineStageFlagBits;
- typedef VkFlags VkPipelineStageFlags;
-
-@@ -1059,7 +1069,7 @@ typedef enum {
- typedef VkFlags VkCmdPoolCreateFlags;
-
- typedef enum {
-- VK_CMD_POOL_RESET_RELEASE_RESOURCES = 0x00000001,
-+ VK_CMD_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
- } VkCmdPoolResetFlagBits;
- typedef VkFlags VkCmdPoolResetFlags;
- typedef VkFlags VkCmdBufferCreateFlags;
-@@ -1074,33 +1084,22 @@ typedef enum {
- typedef VkFlags VkCmdBufferOptimizeFlags;
-
- typedef enum {
-- VK_CMD_BUFFER_RESET_RELEASE_RESOURCES = 0x00000001,
-+ VK_CMD_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
- } VkCmdBufferResetFlagBits;
- typedef VkFlags VkCmdBufferResetFlags;
-
- typedef enum {
-- VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
-- VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
-- VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
-- VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
--} VkImageAspectFlagBits;
--typedef VkFlags VkImageAspectFlags;
-+ VK_STENCIL_FACE_NONE = 0,
-+ VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
-+ VK_STENCIL_FACE_BACK_BIT = 0x00000002,
-+} VkStencilFaceFlagBits;
-+typedef VkFlags VkStencilFaceFlags;
-
- typedef enum {
- VK_QUERY_CONTROL_CONSERVATIVE_BIT = 0x00000001,
- } VkQueryControlFlagBits;
- typedef VkFlags VkQueryControlFlags;
-
--typedef struct {
-- VkStructureType sType;
-- const void* pNext;
-- const char* pAppName;
-- uint32_t appVersion;
-- const char* pEngineName;
-- uint32_t engineVersion;
-- uint32_t apiVersion;
--} VkApplicationInfo;
--
- typedef void* (VKAPI *PFN_vkAllocFunction)(
- void* pUserData,
- size_t size,
-@@ -1111,6 +1110,18 @@ typedef void (VKAPI *PFN_vkFreeFunction)(
- void* pUserData,
- void* pMem);
-
-+typedef void (VKAPI *PFN_vkVoidFunction)(void);
-+
-+typedef struct {
-+ VkStructureType sType;
-+ const void* pNext;
-+ const char* pAppName;
-+ uint32_t appVersion;
-+ const char* pEngineName;
-+ uint32_t engineVersion;
-+ uint32_t apiVersion;
-+} VkApplicationInfo;
-+
- typedef struct {
- void* pUserData;
- PFN_vkAllocFunction pfnAlloc;
-@@ -1138,7 +1149,7 @@ typedef struct {
- VkBool32 sampleRateShading;
- VkBool32 dualSourceBlend;
- VkBool32 logicOp;
-- VkBool32 instancedDrawIndirect;
-+ VkBool32 multiDrawIndirect;
- VkBool32 depthClip;
- VkBool32 depthBiasClamp;
- VkBool32 fillModeNonSolid;
-@@ -1148,6 +1159,7 @@ typedef struct {
- VkBool32 textureCompressionETC2;
- VkBool32 textureCompressionASTC_LDR;
- VkBool32 textureCompressionBC;
-+ VkBool32 occlusionQueryNonConservative;
- VkBool32 pipelineStatisticsQuery;
- VkBool32 vertexSideEffects;
- VkBool32 tessellationSideEffects;
-@@ -1155,11 +1167,9 @@ typedef struct {
- VkBool32 fragmentSideEffects;
- VkBool32 shaderTessellationPointSize;
- VkBool32 shaderGeometryPointSize;
-- VkBool32 shaderTextureGatherExtended;
-+ VkBool32 shaderImageGatherExtended;
- VkBool32 shaderStorageImageExtendedFormats;
- VkBool32 shaderStorageImageMultisample;
-- VkBool32 shaderStorageBufferArrayConstantIndexing;
-- VkBool32 shaderStorageImageArrayConstantIndexing;
- VkBool32 shaderUniformBufferArrayDynamicIndexing;
- VkBool32 shaderSampledImageArrayDynamicIndexing;
- VkBool32 shaderStorageBufferArrayDynamicIndexing;
-@@ -1168,11 +1178,11 @@ typedef struct {
- VkBool32 shaderCullDistance;
- VkBool32 shaderFloat64;
- VkBool32 shaderInt64;
-- VkBool32 shaderFloat16;
- VkBool32 shaderInt16;
- VkBool32 shaderResourceResidency;
- VkBool32 shaderResourceMinLOD;
-- VkBool32 sparse;
-+ VkBool32 alphaToOne;
-+ VkBool32 sparseBinding;
- VkBool32 sparseResidencyBuffer;
- VkBool32 sparseResidencyImage2D;
- VkBool32 sparseResidencyImage3D;
-@@ -1180,23 +1190,27 @@ typedef struct {
- VkBool32 sparseResidency4Samples;
- VkBool32 sparseResidency8Samples;
- VkBool32 sparseResidency16Samples;
-- VkBool32 sparseResidencyStandard2DBlockShape;
-- VkBool32 sparseResidencyStandard2DMSBlockShape;
-- VkBool32 sparseResidencyStandard3DBlockShape;
-- VkBool32 sparseResidencyAlignedMipSize;
-- VkBool32 sparseResidencyNonResident;
-- VkBool32 sparseResidencyNonResidentStrict;
- VkBool32 sparseResidencyAliased;
- } VkPhysicalDeviceFeatures;
-
- typedef struct {
- VkFormatFeatureFlags linearTilingFeatures;
- VkFormatFeatureFlags optimalTilingFeatures;
-+ VkFormatFeatureFlags bufferFeatures;
- } VkFormatProperties;
-
- typedef struct {
-- uint64_t maxResourceSize;
-- uint32_t maxSamples;
-+ int32_t width;
-+ int32_t height;
-+ int32_t depth;
-+} VkExtent3D;
-+
-+typedef struct {
-+ VkExtent3D maxExtent;
-+ uint32_t maxMipLevels;
-+ uint32_t maxArraySize;
-+ VkSampleCountFlags sampleCounts;
-+ VkDeviceSize maxResourceSize;
- } VkImageFormatProperties;
-
- typedef struct {
-@@ -1205,12 +1219,14 @@ typedef struct {
- uint32_t maxImageDimension3D;
- uint32_t maxImageDimensionCube;
- uint32_t maxImageArrayLayers;
-+ VkSampleCountFlags sampleCounts;
- uint32_t maxTexelBufferSize;
- uint32_t maxUniformBufferSize;
- uint32_t maxStorageBufferSize;
- uint32_t maxPushConstantsSize;
- uint32_t maxMemoryAllocationCount;
- VkDeviceSize bufferImageGranularity;
-+ VkDeviceSize sparseAddressSpaceSize;
- uint32_t maxBoundDescriptorSets;
- uint32_t maxDescriptorSets;
- uint32_t maxPerStageDescriptorSamplers;
-@@ -1220,10 +1236,13 @@ typedef struct {
- uint32_t maxPerStageDescriptorStorageImages;
- uint32_t maxDescriptorSetSamplers;
- uint32_t maxDescriptorSetUniformBuffers;
-+ uint32_t maxDescriptorSetUniformBuffersDynamic;
- uint32_t maxDescriptorSetStorageBuffers;
-+ uint32_t maxDescriptorSetStorageBuffersDynamic;
- uint32_t maxDescriptorSetSampledImages;
- uint32_t maxDescriptorSetStorageImages;
- uint32_t maxVertexInputAttributes;
-+ uint32_t maxVertexInputBindings;
- uint32_t maxVertexInputAttributeOffset;
- uint32_t maxVertexInputBindingStride;
- uint32_t maxVertexOutputComponents;
-@@ -1257,7 +1276,6 @@ typedef struct {
- float maxSamplerLodBias;
- float maxSamplerAnisotropy;
- uint32_t maxViewports;
-- uint32_t maxDynamicViewportStates;
- uint32_t maxViewportDimensions[2];
- float viewportBoundsRange[2];
- uint32_t viewportSubPixelBits;
-@@ -1295,6 +1313,15 @@ typedef struct {
- } VkPhysicalDeviceLimits;
-
- typedef struct {
-+ VkBool32 residencyStandard2DBlockShape;
-+ VkBool32 residencyStandard2DMSBlockShape;
-+ VkBool32 residencyStandard3DBlockShape;
-+ VkBool32 residencyAlignedMipSize;
-+ VkBool32 residencyNonResident;
-+ VkBool32 residencyNonResidentStrict;
-+} VkPhysicalDeviceSparseProperties;
-+
-+typedef struct {
- uint32_t apiVersion;
- uint32_t driverVersion;
- uint32_t vendorId;
-@@ -1302,13 +1329,15 @@ typedef struct {
- VkPhysicalDeviceType deviceType;
- char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME];
- uint8_t pipelineCacheUUID[VK_UUID_LENGTH];
-+ VkPhysicalDeviceLimits limits;
-+ VkPhysicalDeviceSparseProperties sparseProperties;
- } VkPhysicalDeviceProperties;
-
- typedef struct {
- VkQueueFlags queueFlags;
- uint32_t queueCount;
- VkBool32 supportsTimestamps;
--} VkPhysicalDeviceQueueProperties;
-+} VkQueueFamilyProperties;
-
- typedef struct {
- VkMemoryPropertyFlags propertyFlags;
-@@ -1327,8 +1356,9 @@ typedef struct {
- VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
- } VkPhysicalDeviceMemoryProperties;
-
--typedef void (VKAPI *PFN_vkVoidFunction)(void);
- typedef struct {
-+ VkStructureType sType;
-+ const void* pNext;
- uint32_t queueFamilyIndex;
- uint32_t queueCount;
- } VkDeviceQueueCreateInfo;
-@@ -1343,7 +1373,6 @@ typedef struct {
- uint32_t extensionCount;
- const char*const* ppEnabledExtensionNames;
- const VkPhysicalDeviceFeatures* pEnabledFeatures;
-- VkDeviceCreateFlags flags;
- } VkDeviceCreateInfo;
-
- typedef struct {
-@@ -1380,12 +1409,6 @@ typedef struct {
- } VkMemoryRequirements;
-
- typedef struct {
-- int32_t width;
-- int32_t height;
-- int32_t depth;
--} VkExtent3D;
--
--typedef struct {
- VkImageAspect aspect;
- VkExtent3D imageGranularity;
- VkSparseImageFormatFlags flags;
-@@ -1410,7 +1433,7 @@ typedef struct {
- typedef struct {
- VkImageAspect aspect;
- uint32_t mipLevel;
-- uint32_t arraySlice;
-+ uint32_t arrayLayer;
- } VkImageSubresource;
-
- typedef struct {
-@@ -1469,7 +1492,6 @@ typedef struct {
- VkStructureType sType;
- const void* pNext;
- VkBuffer buffer;
-- VkBufferViewType viewType;
- VkFormat format;
- VkDeviceSize offset;
- VkDeviceSize range;
-@@ -1490,6 +1512,7 @@ typedef struct {
- VkSharingMode sharingMode;
- uint32_t queueFamilyCount;
- const uint32_t* pQueueFamilyIndices;
-+ VkImageLayout initialLayout;
- } VkImageCreateInfo;
-
- typedef struct {
-@@ -1507,10 +1530,10 @@ typedef struct {
- } VkChannelMapping;
-
- typedef struct {
-- VkImageAspect aspect;
-+ VkImageAspectFlags aspectMask;
- uint32_t baseMipLevel;
- uint32_t mipLevels;
-- uint32_t baseArraySlice;
-+ uint32_t baseArrayLayer;
- uint32_t arraySize;
- } VkImageSubresourceRange;
-
-@@ -1522,22 +1545,12 @@ typedef struct {
- VkFormat format;
- VkChannelMapping channels;
- VkImageSubresourceRange subresourceRange;
-+ VkImageViewCreateFlags flags;
- } VkImageViewCreateInfo;
-
- typedef struct {
- VkStructureType sType;
- const void* pNext;
-- VkImage image;
-- VkFormat format;
-- uint32_t mipLevel;
-- uint32_t baseArraySlice;
-- uint32_t arraySize;
-- VkAttachmentViewCreateFlags flags;
--} VkAttachmentViewCreateInfo;
--
--typedef struct {
-- VkStructureType sType;
-- const void* pNext;
- size_t codeSize;
- const void* pCode;
- VkShaderModuleCreateFlags flags;
-@@ -1549,6 +1562,7 @@ typedef struct {
- VkShaderModule module;
- const char* pName;
- VkShaderCreateFlags flags;
-+ VkShaderStage stage;
- } VkShaderCreateInfo;
-
- typedef struct {
-@@ -1616,9 +1630,36 @@ typedef struct {
- } VkPipelineTessellationStateCreateInfo;
-
- typedef struct {
-+ float originX;
-+ float originY;
-+ float width;
-+ float height;
-+ float minDepth;
-+ float maxDepth;
-+} VkViewport;
-+
-+typedef struct {
-+ int32_t x;
-+ int32_t y;
-+} VkOffset2D;
-+
-+typedef struct {
-+ int32_t width;
-+ int32_t height;
-+} VkExtent2D;
-+
-+typedef struct {
-+ VkOffset2D offset;
-+ VkExtent2D extent;
-+} VkRect2D;
-+
-+typedef struct {
- VkStructureType sType;
- const void* pNext;
- uint32_t viewportCount;
-+ const VkViewport* pViewports;
-+ uint32_t scissorCount;
-+ const VkRect2D* pScissors;
- } VkPipelineViewportStateCreateInfo;
-
- typedef struct {
-@@ -1629,6 +1670,11 @@ typedef struct {
- VkFillMode fillMode;
- VkCullMode cullMode;
- VkFrontFace frontFace;
-+ VkBool32 depthBiasEnable;
-+ float depthBias;
-+ float depthBiasClamp;
-+ float slopeScaledDepthBias;
-+ float lineWidth;
- } VkPipelineRasterStateCreateInfo;
-
- typedef struct {
-@@ -1637,7 +1683,7 @@ typedef struct {
- uint32_t rasterSamples;
- VkBool32 sampleShadingEnable;
- float minSampleShading;
-- VkSampleMask sampleMask;
-+ const VkSampleMask* pSampleMask;
- } VkPipelineMultisampleStateCreateInfo;
-
- typedef struct {
-@@ -1645,6 +1691,9 @@ typedef struct {
- VkStencilOp stencilPassOp;
- VkStencilOp stencilDepthFailOp;
- VkCompareOp stencilCompareOp;
-+ uint32_t stencilCompareMask;
-+ uint32_t stencilWriteMask;
-+ uint32_t stencilReference;
- } VkStencilOpState;
-
- typedef struct {
-@@ -1653,10 +1702,12 @@ typedef struct {
- VkBool32 depthTestEnable;
- VkBool32 depthWriteEnable;
- VkCompareOp depthCompareOp;
-- VkBool32 depthBoundsEnable;
-+ VkBool32 depthBoundsTestEnable;
- VkBool32 stencilTestEnable;
- VkStencilOpState front;
- VkStencilOpState back;
-+ float minDepthBounds;
-+ float maxDepthBounds;
- } VkPipelineDepthStencilStateCreateInfo;
-
- typedef struct {
-@@ -1674,15 +1725,24 @@ typedef struct {
- VkStructureType sType;
- const void* pNext;
- VkBool32 alphaToCoverageEnable;
-+ VkBool32 alphaToOneEnable;
- VkBool32 logicOpEnable;
- VkLogicOp logicOp;
- uint32_t attachmentCount;
- const VkPipelineColorBlendAttachmentState* pAttachments;
-+ float blendConst[4];
- } VkPipelineColorBlendStateCreateInfo;
-
- typedef struct {
- VkStructureType sType;
- const void* pNext;
-+ uint32_t dynamicStateCount;
-+ const VkDynamicState* pDynamicStates;
-+} VkPipelineDynamicStateCreateInfo;
-+
-+typedef struct {
-+ VkStructureType sType;
-+ const void* pNext;
- uint32_t stageCount;
- const VkPipelineShaderStageCreateInfo* pStages;
- const VkPipelineVertexInputStateCreateInfo* pVertexInputState;
-@@ -1693,6 +1753,7 @@ typedef struct {
- const VkPipelineMultisampleStateCreateInfo* pMultisampleState;
- const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState;
- const VkPipelineColorBlendStateCreateInfo* pColorBlendState;
-+ const VkPipelineDynamicStateCreateInfo* pDynamicState;
- VkPipelineCreateFlags flags;
- VkPipelineLayout layout;
- VkRenderPass renderPass;
-@@ -1704,7 +1765,7 @@ typedef struct {
- typedef struct {
- VkStructureType sType;
- const void* pNext;
-- VkPipelineShaderStageCreateInfo cs;
-+ VkPipelineShaderStageCreateInfo stage;
- VkPipelineCreateFlags flags;
- VkPipelineLayout layout;
- VkPipeline basePipelineHandle;
-@@ -1732,9 +1793,9 @@ typedef struct {
- VkTexFilter magFilter;
- VkTexFilter minFilter;
- VkTexMipmapMode mipMode;
-- VkTexAddress addressU;
-- VkTexAddress addressV;
-- VkTexAddress addressW;
-+ VkTexAddressMode addressModeU;
-+ VkTexAddressMode addressModeV;
-+ VkTexAddressMode addressModeW;
- float mipLodBias;
- float maxAnisotropy;
- VkBool32 compareEnable;
-@@ -1742,6 +1803,7 @@ typedef struct {
- float minLod;
- float maxLod;
- VkBorderColor borderColor;
-+ VkBool32 unnormalizedCoordinates;
- } VkSamplerCreateInfo;
-
- typedef struct {
-@@ -1766,16 +1828,24 @@ typedef struct {
- typedef struct {
- VkStructureType sType;
- const void* pNext;
-+ VkDescriptorPoolUsage poolUsage;
-+ uint32_t maxSets;
- uint32_t count;
- const VkDescriptorTypeCount* pTypeCount;
- } VkDescriptorPoolCreateInfo;
-
- typedef struct {
-+ VkBuffer buffer;
-+ VkDeviceSize offset;
-+ VkDeviceSize range;
-+} VkDescriptorBufferInfo;
-+
-+typedef struct {
- VkBufferView bufferView;
- VkSampler sampler;
- VkImageView imageView;
-- VkAttachmentView attachmentView;
- VkImageLayout imageLayout;
-+ VkDescriptorBufferInfo bufferInfo;
- } VkDescriptorInfo;
-
- typedef struct {
-@@ -1802,74 +1872,11 @@ typedef struct {
- } VkCopyDescriptorSet;
-
- typedef struct {
-- float originX;
-- float originY;
-- float width;
-- float height;
-- float minDepth;
-- float maxDepth;
--} VkViewport;
--
--typedef struct {
-- int32_t x;
-- int32_t y;
--} VkOffset2D;
--
--typedef struct {
-- int32_t width;
-- int32_t height;
--} VkExtent2D;
--
--typedef struct {
-- VkOffset2D offset;
-- VkExtent2D extent;
--} VkRect2D;
--
--typedef struct {
-- VkStructureType sType;
-- const void* pNext;
-- uint32_t viewportAndScissorCount;
-- const VkViewport* pViewports;
-- const VkRect2D* pScissors;
--} VkDynamicViewportStateCreateInfo;
--
--typedef struct {
-- VkStructureType sType;
-- const void* pNext;
-- float depthBias;
-- float depthBiasClamp;
-- float slopeScaledDepthBias;
-- float lineWidth;
--} VkDynamicRasterStateCreateInfo;
--
--typedef struct {
-- VkStructureType sType;
-- const void* pNext;
-- float blendConst[4];
--} VkDynamicColorBlendStateCreateInfo;
--
--typedef struct {
-- VkStructureType sType;
-- const void* pNext;
-- float minDepthBounds;
-- float maxDepthBounds;
-- uint32_t stencilReadMask;
-- uint32_t stencilWriteMask;
-- uint32_t stencilFrontRef;
-- uint32_t stencilBackRef;
--} VkDynamicDepthStencilStateCreateInfo;
--
--typedef struct {
-- VkAttachmentView view;
-- VkImageLayout layout;
--} VkAttachmentBindInfo;
--
--typedef struct {
- VkStructureType sType;
- const void* pNext;
- VkRenderPass renderPass;
- uint32_t attachmentCount;
-- const VkAttachmentBindInfo* pAttachments;
-+ const VkImageView* pAttachments;
- uint32_t width;
- uint32_t height;
- uint32_t layers;
-@@ -1886,6 +1893,7 @@ typedef struct {
- VkAttachmentStoreOp stencilStoreOp;
- VkImageLayout initialLayout;
- VkImageLayout finalLayout;
-+ VkAttachmentDescriptionFlags flags;
- } VkAttachmentDescription;
-
- typedef struct {
-@@ -1899,13 +1907,13 @@ typedef struct {
- VkPipelineBindPoint pipelineBindPoint;
- VkSubpassDescriptionFlags flags;
- uint32_t inputCount;
-- const VkAttachmentReference* inputAttachments;
-+ const VkAttachmentReference* pInputAttachments;
- uint32_t colorCount;
-- const VkAttachmentReference* colorAttachments;
-- const VkAttachmentReference* resolveAttachments;
-+ const VkAttachmentReference* pColorAttachments;
-+ const VkAttachmentReference* pResolveAttachments;
- VkAttachmentReference depthStencilAttachment;
- uint32_t preserveCount;
-- const VkAttachmentReference* preserveAttachments;
-+ const VkAttachmentReference* pPreserveAttachments;
- } VkSubpassDescription;
-
- typedef struct {
-@@ -1951,6 +1959,7 @@ typedef struct {
- const void* pNext;
- VkCmdBufferOptimizeFlags flags;
- VkRenderPass renderPass;
-+ uint32_t subpass;
- VkFramebuffer framebuffer;
- } VkCmdBufferBeginInfo;
-
-@@ -1961,18 +1970,25 @@ typedef struct {
- } VkBufferCopy;
-
- typedef struct {
-- VkImageSubresource srcSubresource;
-+ VkImageAspect aspect;
-+ uint32_t mipLevel;
-+ uint32_t arrayLayer;
-+ uint32_t arraySize;
-+} VkImageSubresourceCopy;
-+
-+typedef struct {
-+ VkImageSubresourceCopy srcSubresource;
- VkOffset3D srcOffset;
-- VkImageSubresource destSubresource;
-+ VkImageSubresourceCopy destSubresource;
- VkOffset3D destOffset;
- VkExtent3D extent;
- } VkImageCopy;
-
- typedef struct {
-- VkImageSubresource srcSubresource;
-+ VkImageSubresourceCopy srcSubresource;
- VkOffset3D srcOffset;
- VkExtent3D srcExtent;
-- VkImageSubresource destSubresource;
-+ VkImageSubresourceCopy destSubresource;
- VkOffset3D destOffset;
- VkExtent3D destExtent;
- } VkImageBlit;
-@@ -1981,38 +1997,38 @@ typedef struct {
- VkDeviceSize bufferOffset;
- uint32_t bufferRowLength;
- uint32_t bufferImageHeight;
-- VkImageSubresource imageSubresource;
-+ VkImageSubresourceCopy imageSubresource;
- VkOffset3D imageOffset;
- VkExtent3D imageExtent;
- } VkBufferImageCopy;
-
- typedef union {
-- float f32[4];
-- int32_t s32[4];
-- uint32_t u32[4];
-+ float float32[4];
-+ int32_t int32[4];
-+ uint32_t uint32[4];
- } VkClearColorValue;
-
- typedef struct {
-+ float depth;
-+ uint32_t stencil;
-+} VkClearDepthStencilValue;
-+
-+typedef struct {
- VkOffset3D offset;
- VkExtent3D extent;
- } VkRect3D;
-
- typedef struct {
-- VkImageSubresource srcSubresource;
-+ VkImageSubresourceCopy srcSubresource;
- VkOffset3D srcOffset;
-- VkImageSubresource destSubresource;
-+ VkImageSubresourceCopy destSubresource;
- VkOffset3D destOffset;
- VkExtent3D extent;
- } VkImageResolve;
-
--typedef struct {
-- float depth;
-- uint32_t stencil;
--} VkClearDepthStencilValue;
--
- typedef union {
- VkClearColorValue color;
-- VkClearDepthStencilValue ds;
-+ VkClearDepthStencilValue depthStencil;
- } VkClearValue;
-
- typedef struct {
-@@ -2021,8 +2037,8 @@ typedef struct {
- VkRenderPass renderPass;
- VkFramebuffer framebuffer;
- VkRect2D renderArea;
-- uint32_t attachmentCount;
-- const VkClearValue* pAttachmentClearValues;
-+ uint32_t clearValueCount;
-+ const VkClearValue* pClearValues;
- } VkRenderPassBeginInfo;
-
- typedef struct {
-@@ -2080,32 +2096,30 @@ typedef struct {
-
-
- typedef VkResult (VKAPI *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance);
--typedef VkResult (VKAPI *PFN_vkDestroyInstance)(VkInstance instance);
-+typedef void (VKAPI *PFN_vkDestroyInstance)(VkInstance instance);
- typedef VkResult (VKAPI *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
- typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
- typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageFormatProperties* pImageFormatProperties);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceLimits)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceLimits* pLimits);
-+typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
- typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceQueueCount)(VkPhysicalDevice physicalDevice, uint32_t* pCount);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceQueueProperties)(VkPhysicalDevice physicalDevice, uint32_t count, VkPhysicalDeviceQueueProperties* pQueueProperties);
-+typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties);
- typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
- typedef PFN_vkVoidFunction (VKAPI *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
- typedef PFN_vkVoidFunction (VKAPI *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
- typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice);
--typedef VkResult (VKAPI *PFN_vkDestroyDevice)(VkDevice device);
--typedef VkResult (VKAPI *PFN_vkGetGlobalExtensionProperties)(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkGetGlobalLayerProperties)(uint32_t* pCount, VkLayerProperties* pProperties);
--typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
-+typedef void (VKAPI *PFN_vkDestroyDevice)(VkDevice device);
-+typedef VkResult (VKAPI *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
-+typedef VkResult (VKAPI *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
-+typedef VkResult (VKAPI *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pCount, VkLayerProperties* pProperties);
-+typedef VkResult (VKAPI *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
- typedef VkResult (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
- typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkQueueWaitIdle)(VkQueue queue);
- typedef VkResult (VKAPI *PFN_vkDeviceWaitIdle)(VkDevice device);
- typedef VkResult (VKAPI *PFN_vkAllocMemory)(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem);
--typedef VkResult (VKAPI *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory mem);
-+typedef void (VKAPI *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory mem);
- typedef VkResult (VKAPI *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
--typedef VkResult (VKAPI *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory mem);
-+typedef void (VKAPI *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory mem);
- typedef VkResult (VKAPI *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
- typedef VkResult (VKAPI *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
- typedef VkResult (VKAPI *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
-@@ -2119,88 +2133,83 @@ typedef VkResult (VKAPI *PFN_vkQueueBindSparseBufferMemory)(VkQueue queue, VkBuf
- typedef VkResult (VKAPI *PFN_vkQueueBindSparseImageOpaqueMemory)(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo);
- typedef VkResult (VKAPI *PFN_vkQueueBindSparseImageMemory)(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo);
- typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence);
--typedef VkResult (VKAPI *PFN_vkDestroyFence)(VkDevice device, VkFence fence);
-+typedef void (VKAPI *PFN_vkDestroyFence)(VkDevice device, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
- typedef VkResult (VKAPI *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
- typedef VkResult (VKAPI *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
- typedef VkResult (VKAPI *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore);
--typedef VkResult (VKAPI *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore);
-+typedef void (VKAPI *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore);
- typedef VkResult (VKAPI *PFN_vkQueueSignalSemaphore)(VkQueue queue, VkSemaphore semaphore);
- typedef VkResult (VKAPI *PFN_vkQueueWaitSemaphore)(VkQueue queue, VkSemaphore semaphore);
- typedef VkResult (VKAPI *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent);
--typedef VkResult (VKAPI *PFN_vkDestroyEvent)(VkDevice device, VkEvent event);
-+typedef void (VKAPI *PFN_vkDestroyEvent)(VkDevice device, VkEvent event);
- typedef VkResult (VKAPI *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
- typedef VkResult (VKAPI *PFN_vkSetEvent)(VkDevice device, VkEvent event);
- typedef VkResult (VKAPI *PFN_vkResetEvent)(VkDevice device, VkEvent event);
- typedef VkResult (VKAPI *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool);
--typedef VkResult (VKAPI *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool);
-+typedef void (VKAPI *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool);
- typedef VkResult (VKAPI *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags);
- typedef VkResult (VKAPI *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer);
--typedef VkResult (VKAPI *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer);
-+typedef void (VKAPI *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer);
- typedef VkResult (VKAPI *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView);
--typedef VkResult (VKAPI *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView);
-+typedef void (VKAPI *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView);
- typedef VkResult (VKAPI *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage);
--typedef VkResult (VKAPI *PFN_vkDestroyImage)(VkDevice device, VkImage image);
-+typedef void (VKAPI *PFN_vkDestroyImage)(VkDevice device, VkImage image);
- typedef VkResult (VKAPI *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
- typedef VkResult (VKAPI *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView);
--typedef VkResult (VKAPI *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView);
--typedef VkResult (VKAPI *PFN_vkCreateAttachmentView)(VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView);
--typedef VkResult (VKAPI *PFN_vkDestroyAttachmentView)(VkDevice device, VkAttachmentView attachmentView);
-+typedef void (VKAPI *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView);
- typedef VkResult (VKAPI *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule);
--typedef VkResult (VKAPI *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule);
-+typedef void (VKAPI *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule);
- typedef VkResult (VKAPI *PFN_vkCreateShader)(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader);
--typedef VkResult (VKAPI *PFN_vkDestroyShader)(VkDevice device, VkShader shader);
-+typedef void (VKAPI *PFN_vkDestroyShader)(VkDevice device, VkShader shader);
- typedef VkResult (VKAPI *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache);
--typedef VkResult (VKAPI *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache);
-+typedef void (VKAPI *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache);
- typedef size_t (VKAPI *PFN_vkGetPipelineCacheSize)(VkDevice device, VkPipelineCache pipelineCache);
- typedef VkResult (VKAPI *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, void* pData);
- typedef VkResult (VKAPI *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
- typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
- typedef VkResult (VKAPI *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
--typedef VkResult (VKAPI *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline);
-+typedef void (VKAPI *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline);
- typedef VkResult (VKAPI *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout);
--typedef VkResult (VKAPI *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout);
-+typedef void (VKAPI *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout);
- typedef VkResult (VKAPI *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler);
--typedef VkResult (VKAPI *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler);
-+typedef void (VKAPI *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler);
- typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout);
--typedef VkResult (VKAPI *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout);
--typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool);
--typedef VkResult (VKAPI *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool);
-+typedef void (VKAPI *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout);
-+typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool);
-+typedef void (VKAPI *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool);
- typedef VkResult (VKAPI *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool);
--typedef VkResult (VKAPI *PFN_vkAllocDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount);
-+typedef VkResult (VKAPI *PFN_vkAllocDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets);
- typedef VkResult (VKAPI *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets);
--typedef VkResult (VKAPI *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies);
--typedef VkResult (VKAPI *PFN_vkCreateDynamicViewportState)(VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState);
--typedef VkResult (VKAPI *PFN_vkDestroyDynamicViewportState)(VkDevice device, VkDynamicViewportState dynamicViewportState);
--typedef VkResult (VKAPI *PFN_vkCreateDynamicRasterState)(VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState);
--typedef VkResult (VKAPI *PFN_vkDestroyDynamicRasterState)(VkDevice device, VkDynamicRasterState dynamicRasterState);
--typedef VkResult (VKAPI *PFN_vkCreateDynamicColorBlendState)(VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState);
--typedef VkResult (VKAPI *PFN_vkDestroyDynamicColorBlendState)(VkDevice device, VkDynamicColorBlendState dynamicColorBlendState);
--typedef VkResult (VKAPI *PFN_vkCreateDynamicDepthStencilState)(VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState);
--typedef VkResult (VKAPI *PFN_vkDestroyDynamicDepthStencilState)(VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState);
-+typedef void (VKAPI *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies);
- typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer);
--typedef VkResult (VKAPI *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer);
-+typedef void (VKAPI *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer);
- typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass);
--typedef VkResult (VKAPI *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass);
-+typedef void (VKAPI *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass);
- typedef VkResult (VKAPI *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
- typedef VkResult (VKAPI *PFN_vkCreateCommandPool)(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool);
--typedef VkResult (VKAPI *PFN_vkDestroyCommandPool)(VkDevice device, VkCmdPool cmdPool);
-+typedef void (VKAPI *PFN_vkDestroyCommandPool)(VkDevice device, VkCmdPool cmdPool);
- typedef VkResult (VKAPI *PFN_vkResetCommandPool)(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags);
- typedef VkResult (VKAPI *PFN_vkCreateCommandBuffer)(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer);
--typedef VkResult (VKAPI *PFN_vkDestroyCommandBuffer)(VkDevice device, VkCmdBuffer commandBuffer);
-+typedef void (VKAPI *PFN_vkDestroyCommandBuffer)(VkDevice device, VkCmdBuffer commandBuffer);
- typedef VkResult (VKAPI *PFN_vkBeginCommandBuffer)(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo);
- typedef VkResult (VKAPI *PFN_vkEndCommandBuffer)(VkCmdBuffer cmdBuffer);
- typedef VkResult (VKAPI *PFN_vkResetCommandBuffer)(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags);
- typedef void (VKAPI *PFN_vkCmdBindPipeline)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
--typedef void (VKAPI *PFN_vkCmdBindDynamicViewportState)(VkCmdBuffer cmdBuffer, VkDynamicViewportState dynamicViewportState);
--typedef void (VKAPI *PFN_vkCmdBindDynamicRasterState)(VkCmdBuffer cmdBuffer, VkDynamicRasterState dynamicRasterState);
--typedef void (VKAPI *PFN_vkCmdBindDynamicColorBlendState)(VkCmdBuffer cmdBuffer, VkDynamicColorBlendState dynamicColorBlendState);
--typedef void (VKAPI *PFN_vkCmdBindDynamicDepthStencilState)(VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState dynamicDepthStencilState);
-+typedef void (VKAPI *PFN_vkCmdSetViewport)(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports);
-+typedef void (VKAPI *PFN_vkCmdSetScissor)(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
-+typedef void (VKAPI *PFN_vkCmdSetLineWidth)(VkCmdBuffer cmdBuffer, float lineWidth);
-+typedef void (VKAPI *PFN_vkCmdSetDepthBias)(VkCmdBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias);
-+typedef void (VKAPI *PFN_vkCmdSetBlendConstants)(VkCmdBuffer cmdBuffer, const float blendConst[4]);
-+typedef void (VKAPI *PFN_vkCmdSetDepthBounds)(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds);
-+typedef void (VKAPI *PFN_vkCmdSetStencilCompareMask)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
-+typedef void (VKAPI *PFN_vkCmdSetStencilWriteMask)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
-+typedef void (VKAPI *PFN_vkCmdSetStencilReference)(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference);
- typedef void (VKAPI *PFN_vkCmdBindDescriptorSets)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
- typedef void (VKAPI *PFN_vkCmdBindIndexBuffer)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
- typedef void (VKAPI *PFN_vkCmdBindVertexBuffers)(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
--typedef void (VKAPI *PFN_vkCmdDraw)(VkCmdBuffer cmdBuffer, uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount);
--typedef void (VKAPI *PFN_vkCmdDrawIndexed)(VkCmdBuffer cmdBuffer, uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount);
-+typedef void (VKAPI *PFN_vkCmdDraw)(VkCmdBuffer cmdBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
-+typedef void (VKAPI *PFN_vkCmdDrawIndexed)(VkCmdBuffer cmdBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
- typedef void (VKAPI *PFN_vkCmdDrawIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride);
- typedef void (VKAPI *PFN_vkCmdDrawIndexedIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride);
- typedef void (VKAPI *PFN_vkCmdDispatch)(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z);
-@@ -2213,9 +2222,9 @@ typedef void (VKAPI *PFN_vkCmdCopyImageToBuffer)(VkCmdBuffer cmdBuffer, VkImage
- typedef void (VKAPI *PFN_vkCmdUpdateBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData);
- typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data);
- typedef void (VKAPI *PFN_vkCmdClearColorImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--typedef void (VKAPI *PFN_vkCmdClearDepthStencilImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-+typedef void (VKAPI *PFN_vkCmdClearDepthStencilImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
- typedef void (VKAPI *PFN_vkCmdClearColorAttachment)(VkCmdBuffer cmdBuffer, uint32_t colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rectCount, const VkRect3D* pRects);
--typedef void (VKAPI *PFN_vkCmdClearDepthStencilAttachment)(VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rectCount, const VkRect3D* pRects);
-+typedef void (VKAPI *PFN_vkCmdClearDepthStencilAttachment)(VkCmdBuffer cmdBuffer, VkImageAspectFlags aspectMask, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rectCount, const VkRect3D* pRects);
- typedef void (VKAPI *PFN_vkCmdResolveImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
- typedef void (VKAPI *PFN_vkCmdSetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- typedef void (VKAPI *PFN_vkCmdResetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-@@ -2237,7 +2246,7 @@ VkResult VKAPI vkCreateInstance(
- const VkInstanceCreateInfo* pCreateInfo,
- VkInstance* pInstance);
-
--VkResult VKAPI vkDestroyInstance(
-+void VKAPI vkDestroyInstance(
- VkInstance instance);
-
- VkResult VKAPI vkEnumeratePhysicalDevices(
-@@ -2260,24 +2269,17 @@ VkResult VKAPI vkGetPhysicalDeviceImageFormatProperties(
- VkImageType type,
- VkImageTiling tiling,
- VkImageUsageFlags usage,
-+ VkImageCreateFlags flags,
- VkImageFormatProperties* pImageFormatProperties);
-
--VkResult VKAPI vkGetPhysicalDeviceLimits(
-- VkPhysicalDevice physicalDevice,
-- VkPhysicalDeviceLimits* pLimits);
--
- VkResult VKAPI vkGetPhysicalDeviceProperties(
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties* pProperties);
-
--VkResult VKAPI vkGetPhysicalDeviceQueueCount(
-+VkResult VKAPI vkGetPhysicalDeviceQueueFamilyProperties(
- VkPhysicalDevice physicalDevice,
-- uint32_t* pCount);
--
--VkResult VKAPI vkGetPhysicalDeviceQueueProperties(
-- VkPhysicalDevice physicalDevice,
-- uint32_t count,
-- VkPhysicalDeviceQueueProperties* pQueueProperties);
-+ uint32_t* pCount,
-+ VkQueueFamilyProperties* pQueueFamilyProperties);
-
- VkResult VKAPI vkGetPhysicalDeviceMemoryProperties(
- VkPhysicalDevice physicalDevice,
-@@ -2296,25 +2298,25 @@ VkResult VKAPI vkCreateDevice(
- const VkDeviceCreateInfo* pCreateInfo,
- VkDevice* pDevice);
-
--VkResult VKAPI vkDestroyDevice(
-+void VKAPI vkDestroyDevice(
- VkDevice device);
-
--VkResult VKAPI vkGetGlobalExtensionProperties(
-+VkResult VKAPI vkEnumerateInstanceExtensionProperties(
- const char* pLayerName,
- uint32_t* pCount,
- VkExtensionProperties* pProperties);
-
--VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
-+VkResult VKAPI vkEnumerateDeviceExtensionProperties(
- VkPhysicalDevice physicalDevice,
- const char* pLayerName,
- uint32_t* pCount,
- VkExtensionProperties* pProperties);
-
--VkResult VKAPI vkGetGlobalLayerProperties(
-+VkResult VKAPI vkEnumerateInstanceLayerProperties(
- uint32_t* pCount,
- VkLayerProperties* pProperties);
-
--VkResult VKAPI vkGetPhysicalDeviceLayerProperties(
-+VkResult VKAPI vkEnumerateDeviceLayerProperties(
- VkPhysicalDevice physicalDevice,
- uint32_t* pCount,
- VkLayerProperties* pProperties);
-@@ -2342,7 +2344,7 @@ VkResult VKAPI vkAllocMemory(
- const VkMemoryAllocInfo* pAllocInfo,
- VkDeviceMemory* pMem);
-
--VkResult VKAPI vkFreeMemory(
-+void VKAPI vkFreeMemory(
- VkDevice device,
- VkDeviceMemory mem);
-
-@@ -2354,7 +2356,7 @@ VkResult VKAPI vkMapMemory(
- VkMemoryMapFlags flags,
- void** ppData);
-
--VkResult VKAPI vkUnmapMemory(
-+void VKAPI vkUnmapMemory(
- VkDevice device,
- VkDeviceMemory mem);
-
-@@ -2434,7 +2436,7 @@ VkResult VKAPI vkCreateFence(
- const VkFenceCreateInfo* pCreateInfo,
- VkFence* pFence);
-
--VkResult VKAPI vkDestroyFence(
-+void VKAPI vkDestroyFence(
- VkDevice device,
- VkFence fence);
-
-@@ -2459,7 +2461,7 @@ VkResult VKAPI vkCreateSemaphore(
- const VkSemaphoreCreateInfo* pCreateInfo,
- VkSemaphore* pSemaphore);
-
--VkResult VKAPI vkDestroySemaphore(
-+void VKAPI vkDestroySemaphore(
- VkDevice device,
- VkSemaphore semaphore);
-
-@@ -2476,7 +2478,7 @@ VkResult VKAPI vkCreateEvent(
- const VkEventCreateInfo* pCreateInfo,
- VkEvent* pEvent);
-
--VkResult VKAPI vkDestroyEvent(
-+void VKAPI vkDestroyEvent(
- VkDevice device,
- VkEvent event);
-
-@@ -2497,7 +2499,7 @@ VkResult VKAPI vkCreateQueryPool(
- const VkQueryPoolCreateInfo* pCreateInfo,
- VkQueryPool* pQueryPool);
-
--VkResult VKAPI vkDestroyQueryPool(
-+void VKAPI vkDestroyQueryPool(
- VkDevice device,
- VkQueryPool queryPool);
-
-@@ -2515,7 +2517,7 @@ VkResult VKAPI vkCreateBuffer(
- const VkBufferCreateInfo* pCreateInfo,
- VkBuffer* pBuffer);
-
--VkResult VKAPI vkDestroyBuffer(
-+void VKAPI vkDestroyBuffer(
- VkDevice device,
- VkBuffer buffer);
-
-@@ -2524,7 +2526,7 @@ VkResult VKAPI vkCreateBufferView(
- const VkBufferViewCreateInfo* pCreateInfo,
- VkBufferView* pView);
-
--VkResult VKAPI vkDestroyBufferView(
-+void VKAPI vkDestroyBufferView(
- VkDevice device,
- VkBufferView bufferView);
-
-@@ -2533,7 +2535,7 @@ VkResult VKAPI vkCreateImage(
- const VkImageCreateInfo* pCreateInfo,
- VkImage* pImage);
-
--VkResult VKAPI vkDestroyImage(
-+void VKAPI vkDestroyImage(
- VkDevice device,
- VkImage image);
-
-@@ -2548,25 +2550,16 @@ VkResult VKAPI vkCreateImageView(
- const VkImageViewCreateInfo* pCreateInfo,
- VkImageView* pView);
-
--VkResult VKAPI vkDestroyImageView(
-+void VKAPI vkDestroyImageView(
- VkDevice device,
- VkImageView imageView);
-
--VkResult VKAPI vkCreateAttachmentView(
-- VkDevice device,
-- const VkAttachmentViewCreateInfo* pCreateInfo,
-- VkAttachmentView* pView);
--
--VkResult VKAPI vkDestroyAttachmentView(
-- VkDevice device,
-- VkAttachmentView attachmentView);
--
- VkResult VKAPI vkCreateShaderModule(
- VkDevice device,
- const VkShaderModuleCreateInfo* pCreateInfo,
- VkShaderModule* pShaderModule);
-
--VkResult VKAPI vkDestroyShaderModule(
-+void VKAPI vkDestroyShaderModule(
- VkDevice device,
- VkShaderModule shaderModule);
-
-@@ -2575,7 +2568,7 @@ VkResult VKAPI vkCreateShader(
- const VkShaderCreateInfo* pCreateInfo,
- VkShader* pShader);
-
--VkResult VKAPI vkDestroyShader(
-+void VKAPI vkDestroyShader(
- VkDevice device,
- VkShader shader);
-
-@@ -2584,7 +2577,7 @@ VkResult VKAPI vkCreatePipelineCache(
- const VkPipelineCacheCreateInfo* pCreateInfo,
- VkPipelineCache* pPipelineCache);
-
--VkResult VKAPI vkDestroyPipelineCache(
-+void VKAPI vkDestroyPipelineCache(
- VkDevice device,
- VkPipelineCache pipelineCache);
-
-@@ -2617,7 +2610,7 @@ VkResult VKAPI vkCreateComputePipelines(
- const VkComputePipelineCreateInfo* pCreateInfos,
- VkPipeline* pPipelines);
-
--VkResult VKAPI vkDestroyPipeline(
-+void VKAPI vkDestroyPipeline(
- VkDevice device,
- VkPipeline pipeline);
-
-@@ -2626,7 +2619,7 @@ VkResult VKAPI vkCreatePipelineLayout(
- const VkPipelineLayoutCreateInfo* pCreateInfo,
- VkPipelineLayout* pPipelineLayout);
-
--VkResult VKAPI vkDestroyPipelineLayout(
-+void VKAPI vkDestroyPipelineLayout(
- VkDevice device,
- VkPipelineLayout pipelineLayout);
-
-@@ -2635,7 +2628,7 @@ VkResult VKAPI vkCreateSampler(
- const VkSamplerCreateInfo* pCreateInfo,
- VkSampler* pSampler);
-
--VkResult VKAPI vkDestroySampler(
-+void VKAPI vkDestroySampler(
- VkDevice device,
- VkSampler sampler);
-
-@@ -2644,18 +2637,16 @@ VkResult VKAPI vkCreateDescriptorSetLayout(
- const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
- VkDescriptorSetLayout* pSetLayout);
-
--VkResult VKAPI vkDestroyDescriptorSetLayout(
-+void VKAPI vkDestroyDescriptorSetLayout(
- VkDevice device,
- VkDescriptorSetLayout descriptorSetLayout);
-
- VkResult VKAPI vkCreateDescriptorPool(
- VkDevice device,
-- VkDescriptorPoolUsage poolUsage,
-- uint32_t maxSets,
- const VkDescriptorPoolCreateInfo* pCreateInfo,
- VkDescriptorPool* pDescriptorPool);
-
--VkResult VKAPI vkDestroyDescriptorPool(
-+void VKAPI vkDestroyDescriptorPool(
- VkDevice device,
- VkDescriptorPool descriptorPool);
-
-@@ -2669,8 +2660,7 @@ VkResult VKAPI vkAllocDescriptorSets(
- VkDescriptorSetUsage setUsage,
- uint32_t count,
- const VkDescriptorSetLayout* pSetLayouts,
-- VkDescriptorSet* pDescriptorSets,
-- uint32_t* pCount);
-+ VkDescriptorSet* pDescriptorSets);
-
- VkResult VKAPI vkFreeDescriptorSets(
- VkDevice device,
-@@ -2678,55 +2668,19 @@ VkResult VKAPI vkFreeDescriptorSets(
- uint32_t count,
- const VkDescriptorSet* pDescriptorSets);
-
--VkResult VKAPI vkUpdateDescriptorSets(
-+void VKAPI vkUpdateDescriptorSets(
- VkDevice device,
- uint32_t writeCount,
- const VkWriteDescriptorSet* pDescriptorWrites,
- uint32_t copyCount,
- const VkCopyDescriptorSet* pDescriptorCopies);
-
--VkResult VKAPI vkCreateDynamicViewportState(
-- VkDevice device,
-- const VkDynamicViewportStateCreateInfo* pCreateInfo,
-- VkDynamicViewportState* pState);
--
--VkResult VKAPI vkDestroyDynamicViewportState(
-- VkDevice device,
-- VkDynamicViewportState dynamicViewportState);
--
--VkResult VKAPI vkCreateDynamicRasterState(
-- VkDevice device,
-- const VkDynamicRasterStateCreateInfo* pCreateInfo,
-- VkDynamicRasterState* pState);
--
--VkResult VKAPI vkDestroyDynamicRasterState(
-- VkDevice device,
-- VkDynamicRasterState dynamicRasterState);
--
--VkResult VKAPI vkCreateDynamicColorBlendState(
-- VkDevice device,
-- const VkDynamicColorBlendStateCreateInfo* pCreateInfo,
-- VkDynamicColorBlendState* pState);
--
--VkResult VKAPI vkDestroyDynamicColorBlendState(
-- VkDevice device,
-- VkDynamicColorBlendState dynamicColorBlendState);
--
--VkResult VKAPI vkCreateDynamicDepthStencilState(
-- VkDevice device,
-- const VkDynamicDepthStencilStateCreateInfo* pCreateInfo,
-- VkDynamicDepthStencilState* pState);
--
--VkResult VKAPI vkDestroyDynamicDepthStencilState(
-- VkDevice device,
-- VkDynamicDepthStencilState dynamicDepthStencilState);
--
- VkResult VKAPI vkCreateFramebuffer(
- VkDevice device,
- const VkFramebufferCreateInfo* pCreateInfo,
- VkFramebuffer* pFramebuffer);
-
--VkResult VKAPI vkDestroyFramebuffer(
-+void VKAPI vkDestroyFramebuffer(
- VkDevice device,
- VkFramebuffer framebuffer);
-
-@@ -2735,7 +2689,7 @@ VkResult VKAPI vkCreateRenderPass(
- const VkRenderPassCreateInfo* pCreateInfo,
- VkRenderPass* pRenderPass);
-
--VkResult VKAPI vkDestroyRenderPass(
-+void VKAPI vkDestroyRenderPass(
- VkDevice device,
- VkRenderPass renderPass);
-
-@@ -2749,7 +2703,7 @@ VkResult VKAPI vkCreateCommandPool(
- const VkCmdPoolCreateInfo* pCreateInfo,
- VkCmdPool* pCmdPool);
-
--VkResult VKAPI vkDestroyCommandPool(
-+void VKAPI vkDestroyCommandPool(
- VkDevice device,
- VkCmdPool cmdPool);
-
-@@ -2763,7 +2717,7 @@ VkResult VKAPI vkCreateCommandBuffer(
- const VkCmdBufferCreateInfo* pCreateInfo,
- VkCmdBuffer* pCmdBuffer);
-
--VkResult VKAPI vkDestroyCommandBuffer(
-+void VKAPI vkDestroyCommandBuffer(
- VkDevice device,
- VkCmdBuffer commandBuffer);
-
-@@ -2783,21 +2737,49 @@ void VKAPI vkCmdBindPipeline(
- VkPipelineBindPoint pipelineBindPoint,
- VkPipeline pipeline);
-
--void VKAPI vkCmdBindDynamicViewportState(
-+void VKAPI vkCmdSetViewport(
-+ VkCmdBuffer cmdBuffer,
-+ uint32_t viewportCount,
-+ const VkViewport* pViewports);
-+
-+void VKAPI vkCmdSetScissor(
-+ VkCmdBuffer cmdBuffer,
-+ uint32_t scissorCount,
-+ const VkRect2D* pScissors);
-+
-+void VKAPI vkCmdSetLineWidth(
-+ VkCmdBuffer cmdBuffer,
-+ float lineWidth);
-+
-+void VKAPI vkCmdSetDepthBias(
- VkCmdBuffer cmdBuffer,
-- VkDynamicViewportState dynamicViewportState);
-+ float depthBias,
-+ float depthBiasClamp,
-+ float slopeScaledDepthBias);
-
--void VKAPI vkCmdBindDynamicRasterState(
-+void VKAPI vkCmdSetBlendConstants(
- VkCmdBuffer cmdBuffer,
-- VkDynamicRasterState dynamicRasterState);
-+ const float blendConst[4]);
-
--void VKAPI vkCmdBindDynamicColorBlendState(
-+void VKAPI vkCmdSetDepthBounds(
- VkCmdBuffer cmdBuffer,
-- VkDynamicColorBlendState dynamicColorBlendState);
-+ float minDepthBounds,
-+ float maxDepthBounds);
-
--void VKAPI vkCmdBindDynamicDepthStencilState(
-+void VKAPI vkCmdSetStencilCompareMask(
- VkCmdBuffer cmdBuffer,
-- VkDynamicDepthStencilState dynamicDepthStencilState);
-+ VkStencilFaceFlags faceMask,
-+ uint32_t stencilCompareMask);
-+
-+void VKAPI vkCmdSetStencilWriteMask(
-+ VkCmdBuffer cmdBuffer,
-+ VkStencilFaceFlags faceMask,
-+ uint32_t stencilWriteMask);
-+
-+void VKAPI vkCmdSetStencilReference(
-+ VkCmdBuffer cmdBuffer,
-+ VkStencilFaceFlags faceMask,
-+ uint32_t stencilReference);
-
- void VKAPI vkCmdBindDescriptorSets(
- VkCmdBuffer cmdBuffer,
-@@ -2824,18 +2806,18 @@ void VKAPI vkCmdBindVertexBuffers(
-
- void VKAPI vkCmdDraw(
- VkCmdBuffer cmdBuffer,
-- uint32_t firstVertex,
- uint32_t vertexCount,
-- uint32_t firstInstance,
-- uint32_t instanceCount);
-+ uint32_t instanceCount,
-+ uint32_t firstVertex,
-+ uint32_t firstInstance);
-
- void VKAPI vkCmdDrawIndexed(
- VkCmdBuffer cmdBuffer,
-- uint32_t firstIndex,
- uint32_t indexCount,
-+ uint32_t instanceCount,
-+ uint32_t firstIndex,
- int32_t vertexOffset,
-- uint32_t firstInstance,
-- uint32_t instanceCount);
-+ uint32_t firstInstance);
-
- void VKAPI vkCmdDrawIndirect(
- VkCmdBuffer cmdBuffer,
-@@ -2930,8 +2912,7 @@ void VKAPI vkCmdClearDepthStencilImage(
- VkCmdBuffer cmdBuffer,
- VkImage image,
- VkImageLayout imageLayout,
-- float depth,
-- uint32_t stencil,
-+ const VkClearDepthStencilValue* pDepthStencil,
- uint32_t rangeCount,
- const VkImageSubresourceRange* pRanges);
-
-@@ -2945,10 +2926,9 @@ void VKAPI vkCmdClearColorAttachment(
-
- void VKAPI vkCmdClearDepthStencilAttachment(
- VkCmdBuffer cmdBuffer,
-- VkImageAspectFlags imageAspectMask,
-+ VkImageAspectFlags aspectMask,
- VkImageLayout imageLayout,
-- float depth,
-- uint32_t stencil,
-+ const VkClearDepthStencilValue* pDepthStencil,
- uint32_t rectCount,
- const VkRect3D* pRects);
-
-diff --git a/vulkan/libvulkan/entry.cpp b/vulkan/libvulkan/entry.cpp
-index cd5dd99..2f7583d 100644
---- a/vulkan/libvulkan/entry.cpp
-+++ b/vulkan/libvulkan/entry.cpp
-@@ -47,8 +47,8 @@ VkResult vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, VkInstance* p
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyInstance(VkInstance instance) {
-- return GetVtbl(instance).DestroyInstance(instance);
-+void vkDestroyInstance(VkInstance instance) {
-+ GetVtbl(instance).DestroyInstance(instance);
- }
-
- __attribute__((visibility("default")))
-@@ -72,13 +72,8 @@ VkResult vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysic
- }
-
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceQueueCount(VkPhysicalDevice physicalDevice, uint32_t* pCount) {
-- return GetVtbl(physicalDevice).GetPhysicalDeviceQueueCount(physicalDevice, pCount);
--}
--
--__attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceQueueProperties(VkPhysicalDevice physicalDevice, uint32_t count, VkPhysicalDeviceQueueProperties* pQueueProperties) {
-- return GetVtbl(physicalDevice).GetPhysicalDeviceQueueProperties(physicalDevice, count, pQueueProperties);
-+VkResult vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties) {
-+ return GetVtbl(physicalDevice).GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pCount, pQueueFamilyProperties);
- }
-
- __attribute__((visibility("default")))
-@@ -97,13 +92,8 @@ VkResult vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, Vk
- }
-
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageFormatProperties* pImageFormatProperties) {
-- return GetVtbl(physicalDevice).GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, pImageFormatProperties);
--}
--
--__attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceLimits(VkPhysicalDevice physicalDevice, VkPhysicalDeviceLimits* pLimits) {
-- return GetVtbl(physicalDevice).GetPhysicalDeviceLimits(physicalDevice, pLimits);
-+VkResult vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
-+ return GetVtbl(physicalDevice).GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
- }
-
- __attribute__((visibility("default")))
-@@ -112,28 +102,28 @@ VkResult vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInf
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyDevice(VkDevice device) {
-- return vulkan::DestroyDevice(device);
-+void vkDestroyDevice(VkDevice device) {
-+ vulkan::DestroyDevice(device);
- }
-
- __attribute__((visibility("default")))
--VkResult vkGetGlobalLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties) {
-- return vulkan::GetGlobalLayerProperties(pCount, pProperties);
-+VkResult vkEnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties) {
-+ return vulkan::EnumerateInstanceLayerProperties(pCount, pProperties);
- }
-
- __attribute__((visibility("default")))
--VkResult vkGetGlobalExtensionProperties(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) {
-- return vulkan::GetGlobalExtensionProperties(pLayerName, pCount, pProperties);
-+VkResult vkEnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) {
-+ return vulkan::EnumerateInstanceExtensionProperties(pLayerName, pCount, pProperties);
- }
-
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties) {
-- return GetVtbl(physicalDevice).GetPhysicalDeviceLayerProperties(physicalDevice, pCount, pProperties);
-+VkResult vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties) {
-+ return GetVtbl(physicalDevice).EnumerateDeviceLayerProperties(physicalDevice, pCount, pProperties);
- }
-
- __attribute__((visibility("default")))
--VkResult vkGetPhysicalDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) {
-- return GetVtbl(physicalDevice).GetPhysicalDeviceExtensionProperties(physicalDevice, pLayerName, pCount, pProperties);
-+VkResult vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) {
-+ return GetVtbl(physicalDevice).EnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pCount, pProperties);
- }
-
- __attribute__((visibility("default")))
-@@ -162,8 +152,8 @@ VkResult vkAllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkD
- }
-
- __attribute__((visibility("default")))
--VkResult vkFreeMemory(VkDevice device, VkDeviceMemory mem) {
-- return GetVtbl(device).FreeMemory(device, mem);
-+void vkFreeMemory(VkDevice device, VkDeviceMemory mem) {
-+ GetVtbl(device).FreeMemory(device, mem);
- }
-
- __attribute__((visibility("default")))
-@@ -172,8 +162,8 @@ VkResult vkMapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, V
- }
-
- __attribute__((visibility("default")))
--VkResult vkUnmapMemory(VkDevice device, VkDeviceMemory mem) {
-- return GetVtbl(device).UnmapMemory(device, mem);
-+void vkUnmapMemory(VkDevice device, VkDeviceMemory mem) {
-+ GetVtbl(device).UnmapMemory(device, mem);
- }
-
- __attribute__((visibility("default")))
-@@ -242,8 +232,8 @@ VkResult vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, Vk
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyFence(VkDevice device, VkFence fence) {
-- return GetVtbl(device).DestroyFence(device, fence);
-+void vkDestroyFence(VkDevice device, VkFence fence) {
-+ GetVtbl(device).DestroyFence(device, fence);
- }
-
- __attribute__((visibility("default")))
-@@ -267,8 +257,8 @@ VkResult vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreate
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroySemaphore(VkDevice device, VkSemaphore semaphore) {
-- return GetVtbl(device).DestroySemaphore(device, semaphore);
-+void vkDestroySemaphore(VkDevice device, VkSemaphore semaphore) {
-+ GetVtbl(device).DestroySemaphore(device, semaphore);
- }
-
- __attribute__((visibility("default")))
-@@ -287,8 +277,8 @@ VkResult vkCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, Vk
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyEvent(VkDevice device, VkEvent event) {
-- return GetVtbl(device).DestroyEvent(device, event);
-+void vkDestroyEvent(VkDevice device, VkEvent event) {
-+ GetVtbl(device).DestroyEvent(device, event);
- }
-
- __attribute__((visibility("default")))
-@@ -312,8 +302,8 @@ VkResult vkCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreate
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool) {
-- return GetVtbl(device).DestroyQueryPool(device, queryPool);
-+void vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool) {
-+ GetVtbl(device).DestroyQueryPool(device, queryPool);
- }
-
- __attribute__((visibility("default")))
-@@ -327,8 +317,8 @@ VkResult vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo,
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyBuffer(VkDevice device, VkBuffer buffer) {
-- return GetVtbl(device).DestroyBuffer(device, buffer);
-+void vkDestroyBuffer(VkDevice device, VkBuffer buffer) {
-+ GetVtbl(device).DestroyBuffer(device, buffer);
- }
-
- __attribute__((visibility("default")))
-@@ -337,8 +327,8 @@ VkResult vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCrea
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyBufferView(VkDevice device, VkBufferView bufferView) {
-- return GetVtbl(device).DestroyBufferView(device, bufferView);
-+void vkDestroyBufferView(VkDevice device, VkBufferView bufferView) {
-+ GetVtbl(device).DestroyBufferView(device, bufferView);
- }
-
- __attribute__((visibility("default")))
-@@ -347,8 +337,8 @@ VkResult vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, Vk
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyImage(VkDevice device, VkImage image) {
-- return GetVtbl(device).DestroyImage(device, image);
-+void vkDestroyImage(VkDevice device, VkImage image) {
-+ GetVtbl(device).DestroyImage(device, image);
- }
-
- __attribute__((visibility("default")))
-@@ -362,18 +352,8 @@ VkResult vkCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreate
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyImageView(VkDevice device, VkImageView imageView) {
-- return GetVtbl(device).DestroyImageView(device, imageView);
--}
--
--__attribute__((visibility("default")))
--VkResult vkCreateAttachmentView(VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView) {
-- return GetVtbl(device).CreateAttachmentView(device, pCreateInfo, pView);
--}
--
--__attribute__((visibility("default")))
--VkResult vkDestroyAttachmentView(VkDevice device, VkAttachmentView attachmentView) {
-- return GetVtbl(device).DestroyAttachmentView(device, attachmentView);
-+void vkDestroyImageView(VkDevice device, VkImageView imageView) {
-+ GetVtbl(device).DestroyImageView(device, imageView);
- }
-
- __attribute__((visibility("default")))
-@@ -382,8 +362,8 @@ VkResult vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* p
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule) {
-- return GetVtbl(device).DestroyShaderModule(device, shaderModule);
-+void vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule) {
-+ GetVtbl(device).DestroyShaderModule(device, shaderModule);
- }
-
- __attribute__((visibility("default")))
-@@ -392,8 +372,8 @@ VkResult vkCreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo,
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyShader(VkDevice device, VkShader shader) {
-- return GetVtbl(device).DestroyShader(device, shader);
-+void vkDestroyShader(VkDevice device, VkShader shader) {
-+ GetVtbl(device).DestroyShader(device, shader);
- }
-
- __attribute__((visibility("default")))
-@@ -402,8 +382,8 @@ VkResult vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo*
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache) {
-- return GetVtbl(device).DestroyPipelineCache(device, pipelineCache);
-+void vkDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache) {
-+ GetVtbl(device).DestroyPipelineCache(device, pipelineCache);
- }
-
- __attribute__((visibility("default")))
-@@ -432,8 +412,8 @@ VkResult vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyPipeline(VkDevice device, VkPipeline pipeline) {
-- return GetVtbl(device).DestroyPipeline(device, pipeline);
-+void vkDestroyPipeline(VkDevice device, VkPipeline pipeline) {
-+ GetVtbl(device).DestroyPipeline(device, pipeline);
- }
-
- __attribute__((visibility("default")))
-@@ -442,8 +422,8 @@ VkResult vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInf
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout) {
-- return GetVtbl(device).DestroyPipelineLayout(device, pipelineLayout);
-+void vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout) {
-+ GetVtbl(device).DestroyPipelineLayout(device, pipelineLayout);
- }
-
- __attribute__((visibility("default")))
-@@ -452,8 +432,8 @@ VkResult vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroySampler(VkDevice device, VkSampler sampler) {
-- return GetVtbl(device).DestroySampler(device, sampler);
-+void vkDestroySampler(VkDevice device, VkSampler sampler) {
-+ GetVtbl(device).DestroySampler(device, sampler);
- }
-
- __attribute__((visibility("default")))
-@@ -462,18 +442,18 @@ VkResult vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayou
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout) {
-- return GetVtbl(device).DestroyDescriptorSetLayout(device, descriptorSetLayout);
-+void vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout) {
-+ GetVtbl(device).DestroyDescriptorSetLayout(device, descriptorSetLayout);
- }
-
- __attribute__((visibility("default")))
--VkResult vkCreateDescriptorPool(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) {
-- return GetVtbl(device).CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool);
-+VkResult vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) {
-+ return GetVtbl(device).CreateDescriptorPool(device, pCreateInfo, pDescriptorPool);
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) {
-- return GetVtbl(device).DestroyDescriptorPool(device, descriptorPool);
-+void vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) {
-+ GetVtbl(device).DestroyDescriptorPool(device, descriptorPool);
- }
-
- __attribute__((visibility("default")))
-@@ -482,8 +462,8 @@ VkResult vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool)
- }
-
- __attribute__((visibility("default")))
--VkResult vkAllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount) {
-- return GetVtbl(device).AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount);
-+VkResult vkAllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets) {
-+ return GetVtbl(device).AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets);
- }
-
- __attribute__((visibility("default")))
-@@ -492,48 +472,8 @@ VkResult vkFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool,
- }
-
- __attribute__((visibility("default")))
--VkResult vkUpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies) {
-- return GetVtbl(device).UpdateDescriptorSets(device, writeCount, pDescriptorWrites, copyCount, pDescriptorCopies);
--}
--
--__attribute__((visibility("default")))
--VkResult vkCreateDynamicViewportState(VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState) {
-- return GetVtbl(device).CreateDynamicViewportState(device, pCreateInfo, pState);
--}
--
--__attribute__((visibility("default")))
--VkResult vkDestroyDynamicViewportState(VkDevice device, VkDynamicViewportState dynamicViewportState) {
-- return GetVtbl(device).DestroyDynamicViewportState(device, dynamicViewportState);
--}
--
--__attribute__((visibility("default")))
--VkResult vkCreateDynamicRasterState(VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState) {
-- return GetVtbl(device).CreateDynamicRasterState(device, pCreateInfo, pState);
--}
--
--__attribute__((visibility("default")))
--VkResult vkDestroyDynamicRasterState(VkDevice device, VkDynamicRasterState dynamicRasterState) {
-- return GetVtbl(device).DestroyDynamicRasterState(device, dynamicRasterState);
--}
--
--__attribute__((visibility("default")))
--VkResult vkCreateDynamicColorBlendState(VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState) {
-- return GetVtbl(device).CreateDynamicColorBlendState(device, pCreateInfo, pState);
--}
--
--__attribute__((visibility("default")))
--VkResult vkDestroyDynamicColorBlendState(VkDevice device, VkDynamicColorBlendState dynamicColorBlendState) {
-- return GetVtbl(device).DestroyDynamicColorBlendState(device, dynamicColorBlendState);
--}
--
--__attribute__((visibility("default")))
--VkResult vkCreateDynamicDepthStencilState(VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState) {
-- return GetVtbl(device).CreateDynamicDepthStencilState(device, pCreateInfo, pState);
--}
--
--__attribute__((visibility("default")))
--VkResult vkDestroyDynamicDepthStencilState(VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState) {
-- return GetVtbl(device).DestroyDynamicDepthStencilState(device, dynamicDepthStencilState);
-+void vkUpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies) {
-+ GetVtbl(device).UpdateDescriptorSets(device, writeCount, pDescriptorWrites, copyCount, pDescriptorCopies);
- }
-
- __attribute__((visibility("default")))
-@@ -542,8 +482,8 @@ VkResult vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCr
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer) {
-- return GetVtbl(device).DestroyFramebuffer(device, framebuffer);
-+void vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer) {
-+ GetVtbl(device).DestroyFramebuffer(device, framebuffer);
- }
-
- __attribute__((visibility("default")))
-@@ -552,8 +492,8 @@ VkResult vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCrea
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass) {
-- return GetVtbl(device).DestroyRenderPass(device, renderPass);
-+void vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass) {
-+ GetVtbl(device).DestroyRenderPass(device, renderPass);
- }
-
- __attribute__((visibility("default")))
-@@ -567,8 +507,8 @@ VkResult vkCreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreate
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyCommandPool(VkDevice device, VkCmdPool cmdPool) {
-- return GetVtbl(device).DestroyCommandPool(device, cmdPool);
-+void vkDestroyCommandPool(VkDevice device, VkCmdPool cmdPool) {
-+ GetVtbl(device).DestroyCommandPool(device, cmdPool);
- }
-
- __attribute__((visibility("default")))
-@@ -582,8 +522,8 @@ VkResult vkCreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCr
- }
-
- __attribute__((visibility("default")))
--VkResult vkDestroyCommandBuffer(VkDevice device, VkCmdBuffer commandBuffer) {
-- return GetVtbl(device).DestroyCommandBuffer(device, commandBuffer);
-+void vkDestroyCommandBuffer(VkDevice device, VkCmdBuffer commandBuffer) {
-+ GetVtbl(device).DestroyCommandBuffer(device, commandBuffer);
- }
-
- __attribute__((visibility("default")))
-@@ -607,23 +547,48 @@ void vkCmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPo
- }
-
- __attribute__((visibility("default")))
--void vkCmdBindDynamicViewportState(VkCmdBuffer cmdBuffer, VkDynamicViewportState dynamicViewportState) {
-- GetVtbl(cmdBuffer).CmdBindDynamicViewportState(cmdBuffer, dynamicViewportState);
-+void vkCmdSetViewport(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports) {
-+ GetVtbl(cmdBuffer).CmdSetViewport(cmdBuffer, viewportCount, pViewports);
-+}
-+
-+__attribute__((visibility("default")))
-+void vkCmdSetScissor(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors) {
-+ GetVtbl(cmdBuffer).CmdSetScissor(cmdBuffer, scissorCount, pScissors);
-+}
-+
-+__attribute__((visibility("default")))
-+void vkCmdSetLineWidth(VkCmdBuffer cmdBuffer, float lineWidth) {
-+ GetVtbl(cmdBuffer).CmdSetLineWidth(cmdBuffer, lineWidth);
-+}
-+
-+__attribute__((visibility("default")))
-+void vkCmdSetDepthBias(VkCmdBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias) {
-+ GetVtbl(cmdBuffer).CmdSetDepthBias(cmdBuffer, depthBias, depthBiasClamp, slopeScaledDepthBias);
-+}
-+
-+__attribute__((visibility("default")))
-+void vkCmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConst[4]) {
-+ GetVtbl(cmdBuffer).CmdSetBlendConstants(cmdBuffer, blendConst);
-+}
-+
-+__attribute__((visibility("default")))
-+void vkCmdSetDepthBounds(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds) {
-+ GetVtbl(cmdBuffer).CmdSetDepthBounds(cmdBuffer, minDepthBounds, maxDepthBounds);
- }
-
- __attribute__((visibility("default")))
--void vkCmdBindDynamicRasterState(VkCmdBuffer cmdBuffer, VkDynamicRasterState dynamicRasterState) {
-- GetVtbl(cmdBuffer).CmdBindDynamicRasterState(cmdBuffer, dynamicRasterState);
-+void vkCmdSetStencilCompareMask(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask) {
-+ GetVtbl(cmdBuffer).CmdSetStencilCompareMask(cmdBuffer, faceMask, stencilCompareMask);
- }
-
- __attribute__((visibility("default")))
--void vkCmdBindDynamicColorBlendState(VkCmdBuffer cmdBuffer, VkDynamicColorBlendState dynamicColorBlendState) {
-- GetVtbl(cmdBuffer).CmdBindDynamicColorBlendState(cmdBuffer, dynamicColorBlendState);
-+void vkCmdSetStencilWriteMask(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask) {
-+ GetVtbl(cmdBuffer).CmdSetStencilWriteMask(cmdBuffer, faceMask, stencilWriteMask);
- }
-
- __attribute__((visibility("default")))
--void vkCmdBindDynamicDepthStencilState(VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState dynamicDepthStencilState) {
-- GetVtbl(cmdBuffer).CmdBindDynamicDepthStencilState(cmdBuffer, dynamicDepthStencilState);
-+void vkCmdSetStencilReference(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference) {
-+ GetVtbl(cmdBuffer).CmdSetStencilReference(cmdBuffer, faceMask, stencilReference);
- }
-
- __attribute__((visibility("default")))
-@@ -642,13 +607,13 @@ void vkCmdBindVertexBuffers(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32
- }
-
- __attribute__((visibility("default")))
--void vkCmdDraw(VkCmdBuffer cmdBuffer, uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount) {
-- GetVtbl(cmdBuffer).CmdDraw(cmdBuffer, firstVertex, vertexCount, firstInstance, instanceCount);
-+void vkCmdDraw(VkCmdBuffer cmdBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) {
-+ GetVtbl(cmdBuffer).CmdDraw(cmdBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
- }
-
- __attribute__((visibility("default")))
--void vkCmdDrawIndexed(VkCmdBuffer cmdBuffer, uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount) {
-- GetVtbl(cmdBuffer).CmdDrawIndexed(cmdBuffer, firstIndex, indexCount, vertexOffset, firstInstance, instanceCount);
-+void vkCmdDrawIndexed(VkCmdBuffer cmdBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) {
-+ GetVtbl(cmdBuffer).CmdDrawIndexed(cmdBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
- }
-
- __attribute__((visibility("default")))
-@@ -712,8 +677,8 @@ void vkCmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout im
- }
-
- __attribute__((visibility("default")))
--void vkCmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
-- GetVtbl(cmdBuffer).CmdClearDepthStencilImage(cmdBuffer, image, imageLayout, depth, stencil, rangeCount, pRanges);
-+void vkCmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
-+ GetVtbl(cmdBuffer).CmdClearDepthStencilImage(cmdBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
- }
-
- __attribute__((visibility("default")))
-@@ -722,8 +687,8 @@ void vkCmdClearColorAttachment(VkCmdBuffer cmdBuffer, uint32_t colorAttachment,
- }
-
- __attribute__((visibility("default")))
--void vkCmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rectCount, const VkRect3D* pRects) {
-- GetVtbl(cmdBuffer).CmdClearDepthStencilAttachment(cmdBuffer, imageAspectMask, imageLayout, depth, stencil, rectCount, pRects);
-+void vkCmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags aspectMask, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rectCount, const VkRect3D* pRects) {
-+ GetVtbl(cmdBuffer).CmdClearDepthStencilAttachment(cmdBuffer, aspectMask, imageLayout, pDepthStencil, rectCount, pRects);
- }
-
- __attribute__((visibility("default")))
-diff --git a/vulkan/libvulkan/get_proc_addr.cpp b/vulkan/libvulkan/get_proc_addr.cpp
-index ceb76b9..5247950 100644
---- a/vulkan/libvulkan/get_proc_addr.cpp
-+++ b/vulkan/libvulkan/get_proc_addr.cpp
-@@ -51,18 +51,16 @@ const NameProcEntry kInstanceProcTbl[] = {
- // clang-format off
- {"vkCreateDevice", reinterpret_cast<PFN_vkVoidFunction>(vkCreateDevice)},
- {"vkDestroyInstance", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyInstance)},
-+ {"vkEnumerateDeviceExtensionProperties", reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateDeviceExtensionProperties)},
-+ {"vkEnumerateDeviceLayerProperties", reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateDeviceLayerProperties)},
- {"vkEnumeratePhysicalDevices", reinterpret_cast<PFN_vkVoidFunction>(vkEnumeratePhysicalDevices)},
- {"vkGetInstanceProcAddr", reinterpret_cast<PFN_vkVoidFunction>(vkGetInstanceProcAddr)},
-- {"vkGetPhysicalDeviceExtensionProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceExtensionProperties)},
- {"vkGetPhysicalDeviceFeatures", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceFeatures)},
- {"vkGetPhysicalDeviceFormatProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceFormatProperties)},
- {"vkGetPhysicalDeviceImageFormatProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceImageFormatProperties)},
-- {"vkGetPhysicalDeviceLayerProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceLayerProperties)},
-- {"vkGetPhysicalDeviceLimits", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceLimits)},
- {"vkGetPhysicalDeviceMemoryProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceMemoryProperties)},
- {"vkGetPhysicalDeviceProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceProperties)},
-- {"vkGetPhysicalDeviceQueueCount", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceQueueCount)},
-- {"vkGetPhysicalDeviceQueueProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceQueueProperties)},
-+ {"vkGetPhysicalDeviceQueueFamilyProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceQueueFamilyProperties)},
- {"vkGetPhysicalDeviceSparseImageFormatProperties", reinterpret_cast<PFN_vkVoidFunction>(vkGetPhysicalDeviceSparseImageFormatProperties)},
- // clang-format on
- };
-@@ -77,10 +75,6 @@ const NameProcEntry kDeviceProcTbl[] = {
- {"vkCmdBeginQuery", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBeginQuery)},
- {"vkCmdBeginRenderPass", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBeginRenderPass)},
- {"vkCmdBindDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindDescriptorSets)},
-- {"vkCmdBindDynamicColorBlendState", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindDynamicColorBlendState)},
-- {"vkCmdBindDynamicDepthStencilState", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindDynamicDepthStencilState)},
-- {"vkCmdBindDynamicRasterState", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindDynamicRasterState)},
-- {"vkCmdBindDynamicViewportState", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindDynamicViewportState)},
- {"vkCmdBindIndexBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindIndexBuffer)},
- {"vkCmdBindPipeline", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindPipeline)},
- {"vkCmdBindVertexBuffers", reinterpret_cast<PFN_vkVoidFunction>(vkCmdBindVertexBuffers)},
-@@ -110,11 +104,19 @@ const NameProcEntry kDeviceProcTbl[] = {
- {"vkCmdResetEvent", reinterpret_cast<PFN_vkVoidFunction>(vkCmdResetEvent)},
- {"vkCmdResetQueryPool", reinterpret_cast<PFN_vkVoidFunction>(vkCmdResetQueryPool)},
- {"vkCmdResolveImage", reinterpret_cast<PFN_vkVoidFunction>(vkCmdResolveImage)},
-+ {"vkCmdSetBlendConstants", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetBlendConstants)},
-+ {"vkCmdSetDepthBias", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetDepthBias)},
-+ {"vkCmdSetDepthBounds", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetDepthBounds)},
- {"vkCmdSetEvent", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetEvent)},
-+ {"vkCmdSetLineWidth", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetLineWidth)},
-+ {"vkCmdSetScissor", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetScissor)},
-+ {"vkCmdSetStencilCompareMask", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetStencilCompareMask)},
-+ {"vkCmdSetStencilReference", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetStencilReference)},
-+ {"vkCmdSetStencilWriteMask", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetStencilWriteMask)},
-+ {"vkCmdSetViewport", reinterpret_cast<PFN_vkVoidFunction>(vkCmdSetViewport)},
- {"vkCmdUpdateBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCmdUpdateBuffer)},
- {"vkCmdWaitEvents", reinterpret_cast<PFN_vkVoidFunction>(vkCmdWaitEvents)},
- {"vkCmdWriteTimestamp", reinterpret_cast<PFN_vkVoidFunction>(vkCmdWriteTimestamp)},
-- {"vkCreateAttachmentView", reinterpret_cast<PFN_vkVoidFunction>(vkCreateAttachmentView)},
- {"vkCreateBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCreateBuffer)},
- {"vkCreateBufferView", reinterpret_cast<PFN_vkVoidFunction>(vkCreateBufferView)},
- {"vkCreateCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCreateCommandBuffer)},
-@@ -122,10 +124,6 @@ const NameProcEntry kDeviceProcTbl[] = {
- {"vkCreateComputePipelines", reinterpret_cast<PFN_vkVoidFunction>(vkCreateComputePipelines)},
- {"vkCreateDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(vkCreateDescriptorPool)},
- {"vkCreateDescriptorSetLayout", reinterpret_cast<PFN_vkVoidFunction>(vkCreateDescriptorSetLayout)},
-- {"vkCreateDynamicColorBlendState", reinterpret_cast<PFN_vkVoidFunction>(vkCreateDynamicColorBlendState)},
-- {"vkCreateDynamicDepthStencilState", reinterpret_cast<PFN_vkVoidFunction>(vkCreateDynamicDepthStencilState)},
-- {"vkCreateDynamicRasterState", reinterpret_cast<PFN_vkVoidFunction>(vkCreateDynamicRasterState)},
-- {"vkCreateDynamicViewportState", reinterpret_cast<PFN_vkVoidFunction>(vkCreateDynamicViewportState)},
- {"vkCreateEvent", reinterpret_cast<PFN_vkVoidFunction>(vkCreateEvent)},
- {"vkCreateFence", reinterpret_cast<PFN_vkVoidFunction>(vkCreateFence)},
- {"vkCreateFramebuffer", reinterpret_cast<PFN_vkVoidFunction>(vkCreateFramebuffer)},
-@@ -140,7 +138,6 @@ const NameProcEntry kDeviceProcTbl[] = {
- {"vkCreateSemaphore", reinterpret_cast<PFN_vkVoidFunction>(vkCreateSemaphore)},
- {"vkCreateShader", reinterpret_cast<PFN_vkVoidFunction>(vkCreateShader)},
- {"vkCreateShaderModule", reinterpret_cast<PFN_vkVoidFunction>(vkCreateShaderModule)},
-- {"vkDestroyAttachmentView", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyAttachmentView)},
- {"vkDestroyBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyBuffer)},
- {"vkDestroyBufferView", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyBufferView)},
- {"vkDestroyCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyCommandBuffer)},
-@@ -148,10 +145,6 @@ const NameProcEntry kDeviceProcTbl[] = {
- {"vkDestroyDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyDescriptorPool)},
- {"vkDestroyDescriptorSetLayout", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyDescriptorSetLayout)},
- {"vkDestroyDevice", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyDevice)},
-- {"vkDestroyDynamicColorBlendState", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyDynamicColorBlendState)},
-- {"vkDestroyDynamicDepthStencilState", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyDynamicDepthStencilState)},
-- {"vkDestroyDynamicRasterState", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyDynamicRasterState)},
-- {"vkDestroyDynamicViewportState", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyDynamicViewportState)},
- {"vkDestroyEvent", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyEvent)},
- {"vkDestroyFence", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyFence)},
- {"vkDestroyFramebuffer", reinterpret_cast<PFN_vkVoidFunction>(vkDestroyFramebuffer)},
-@@ -210,18 +203,16 @@ const NameOffsetEntry kInstanceOffsetTbl[] = {
- // clang-format off
- {"vkCreateDevice", offsetof(InstanceVtbl, CreateDevice)},
- {"vkDestroyInstance", offsetof(InstanceVtbl, DestroyInstance)},
-+ {"vkEnumerateDeviceExtensionProperties", offsetof(InstanceVtbl, EnumerateDeviceExtensionProperties)},
-+ {"vkEnumerateDeviceLayerProperties", offsetof(InstanceVtbl, EnumerateDeviceLayerProperties)},
- {"vkEnumeratePhysicalDevices", offsetof(InstanceVtbl, EnumeratePhysicalDevices)},
- {"vkGetInstanceProcAddr", offsetof(InstanceVtbl, GetInstanceProcAddr)},
-- {"vkGetPhysicalDeviceExtensionProperties", offsetof(InstanceVtbl, GetPhysicalDeviceExtensionProperties)},
- {"vkGetPhysicalDeviceFeatures", offsetof(InstanceVtbl, GetPhysicalDeviceFeatures)},
- {"vkGetPhysicalDeviceFormatProperties", offsetof(InstanceVtbl, GetPhysicalDeviceFormatProperties)},
- {"vkGetPhysicalDeviceImageFormatProperties", offsetof(InstanceVtbl, GetPhysicalDeviceImageFormatProperties)},
-- {"vkGetPhysicalDeviceLayerProperties", offsetof(InstanceVtbl, GetPhysicalDeviceLayerProperties)},
-- {"vkGetPhysicalDeviceLimits", offsetof(InstanceVtbl, GetPhysicalDeviceLimits)},
- {"vkGetPhysicalDeviceMemoryProperties", offsetof(InstanceVtbl, GetPhysicalDeviceMemoryProperties)},
- {"vkGetPhysicalDeviceProperties", offsetof(InstanceVtbl, GetPhysicalDeviceProperties)},
-- {"vkGetPhysicalDeviceQueueCount", offsetof(InstanceVtbl, GetPhysicalDeviceQueueCount)},
-- {"vkGetPhysicalDeviceQueueProperties", offsetof(InstanceVtbl, GetPhysicalDeviceQueueProperties)},
-+ {"vkGetPhysicalDeviceQueueFamilyProperties", offsetof(InstanceVtbl, GetPhysicalDeviceQueueFamilyProperties)},
- {"vkGetPhysicalDeviceSparseImageFormatProperties", offsetof(InstanceVtbl, GetPhysicalDeviceSparseImageFormatProperties)},
- // clang-format on
- };
-@@ -236,10 +227,6 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
- {"vkCmdBeginQuery", offsetof(DeviceVtbl, CmdBeginQuery)},
- {"vkCmdBeginRenderPass", offsetof(DeviceVtbl, CmdBeginRenderPass)},
- {"vkCmdBindDescriptorSets", offsetof(DeviceVtbl, CmdBindDescriptorSets)},
-- {"vkCmdBindDynamicColorBlendState", offsetof(DeviceVtbl, CmdBindDynamicColorBlendState)},
-- {"vkCmdBindDynamicDepthStencilState", offsetof(DeviceVtbl, CmdBindDynamicDepthStencilState)},
-- {"vkCmdBindDynamicRasterState", offsetof(DeviceVtbl, CmdBindDynamicRasterState)},
-- {"vkCmdBindDynamicViewportState", offsetof(DeviceVtbl, CmdBindDynamicViewportState)},
- {"vkCmdBindIndexBuffer", offsetof(DeviceVtbl, CmdBindIndexBuffer)},
- {"vkCmdBindPipeline", offsetof(DeviceVtbl, CmdBindPipeline)},
- {"vkCmdBindVertexBuffers", offsetof(DeviceVtbl, CmdBindVertexBuffers)},
-@@ -269,11 +256,19 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
- {"vkCmdResetEvent", offsetof(DeviceVtbl, CmdResetEvent)},
- {"vkCmdResetQueryPool", offsetof(DeviceVtbl, CmdResetQueryPool)},
- {"vkCmdResolveImage", offsetof(DeviceVtbl, CmdResolveImage)},
-+ {"vkCmdSetBlendConstants", offsetof(DeviceVtbl, CmdSetBlendConstants)},
-+ {"vkCmdSetDepthBias", offsetof(DeviceVtbl, CmdSetDepthBias)},
-+ {"vkCmdSetDepthBounds", offsetof(DeviceVtbl, CmdSetDepthBounds)},
- {"vkCmdSetEvent", offsetof(DeviceVtbl, CmdSetEvent)},
-+ {"vkCmdSetLineWidth", offsetof(DeviceVtbl, CmdSetLineWidth)},
-+ {"vkCmdSetScissor", offsetof(DeviceVtbl, CmdSetScissor)},
-+ {"vkCmdSetStencilCompareMask", offsetof(DeviceVtbl, CmdSetStencilCompareMask)},
-+ {"vkCmdSetStencilReference", offsetof(DeviceVtbl, CmdSetStencilReference)},
-+ {"vkCmdSetStencilWriteMask", offsetof(DeviceVtbl, CmdSetStencilWriteMask)},
-+ {"vkCmdSetViewport", offsetof(DeviceVtbl, CmdSetViewport)},
- {"vkCmdUpdateBuffer", offsetof(DeviceVtbl, CmdUpdateBuffer)},
- {"vkCmdWaitEvents", offsetof(DeviceVtbl, CmdWaitEvents)},
- {"vkCmdWriteTimestamp", offsetof(DeviceVtbl, CmdWriteTimestamp)},
-- {"vkCreateAttachmentView", offsetof(DeviceVtbl, CreateAttachmentView)},
- {"vkCreateBuffer", offsetof(DeviceVtbl, CreateBuffer)},
- {"vkCreateBufferView", offsetof(DeviceVtbl, CreateBufferView)},
- {"vkCreateCommandBuffer", offsetof(DeviceVtbl, CreateCommandBuffer)},
-@@ -281,10 +276,6 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
- {"vkCreateComputePipelines", offsetof(DeviceVtbl, CreateComputePipelines)},
- {"vkCreateDescriptorPool", offsetof(DeviceVtbl, CreateDescriptorPool)},
- {"vkCreateDescriptorSetLayout", offsetof(DeviceVtbl, CreateDescriptorSetLayout)},
-- {"vkCreateDynamicColorBlendState", offsetof(DeviceVtbl, CreateDynamicColorBlendState)},
-- {"vkCreateDynamicDepthStencilState", offsetof(DeviceVtbl, CreateDynamicDepthStencilState)},
-- {"vkCreateDynamicRasterState", offsetof(DeviceVtbl, CreateDynamicRasterState)},
-- {"vkCreateDynamicViewportState", offsetof(DeviceVtbl, CreateDynamicViewportState)},
- {"vkCreateEvent", offsetof(DeviceVtbl, CreateEvent)},
- {"vkCreateFence", offsetof(DeviceVtbl, CreateFence)},
- {"vkCreateFramebuffer", offsetof(DeviceVtbl, CreateFramebuffer)},
-@@ -299,7 +290,6 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
- {"vkCreateSemaphore", offsetof(DeviceVtbl, CreateSemaphore)},
- {"vkCreateShader", offsetof(DeviceVtbl, CreateShader)},
- {"vkCreateShaderModule", offsetof(DeviceVtbl, CreateShaderModule)},
-- {"vkDestroyAttachmentView", offsetof(DeviceVtbl, DestroyAttachmentView)},
- {"vkDestroyBuffer", offsetof(DeviceVtbl, DestroyBuffer)},
- {"vkDestroyBufferView", offsetof(DeviceVtbl, DestroyBufferView)},
- {"vkDestroyCommandBuffer", offsetof(DeviceVtbl, DestroyCommandBuffer)},
-@@ -307,10 +297,6 @@ const NameOffsetEntry kDeviceOffsetTbl[] = {
- {"vkDestroyDescriptorPool", offsetof(DeviceVtbl, DestroyDescriptorPool)},
- {"vkDestroyDescriptorSetLayout", offsetof(DeviceVtbl, DestroyDescriptorSetLayout)},
- {"vkDestroyDevice", offsetof(DeviceVtbl, DestroyDevice)},
-- {"vkDestroyDynamicColorBlendState", offsetof(DeviceVtbl, DestroyDynamicColorBlendState)},
-- {"vkDestroyDynamicDepthStencilState", offsetof(DeviceVtbl, DestroyDynamicDepthStencilState)},
-- {"vkDestroyDynamicRasterState", offsetof(DeviceVtbl, DestroyDynamicRasterState)},
-- {"vkDestroyDynamicViewportState", offsetof(DeviceVtbl, DestroyDynamicViewportState)},
- {"vkDestroyEvent", offsetof(DeviceVtbl, DestroyEvent)},
- {"vkDestroyFence", offsetof(DeviceVtbl, DestroyFence)},
- {"vkDestroyFramebuffer", offsetof(DeviceVtbl, DestroyFramebuffer)},
-@@ -453,7 +439,6 @@ PFN_vkVoidFunction GetSpecificDeviceProcAddr(const DeviceVtbl* vtbl,
- const_cast<unsigned char*>(base) + entry->offset);
- }
-
--// TODO: remove need for instance_next
- bool LoadInstanceVtbl(VkInstance instance,
- VkInstance instance_next,
- PFN_vkGetInstanceProcAddr get_proc_addr,
-@@ -484,14 +469,9 @@ bool LoadInstanceVtbl(VkInstance instance,
- ALOGE("missing instance proc: %s", "vkGetPhysicalDeviceProperties");
- success = false;
- }
-- vtbl.GetPhysicalDeviceQueueCount = reinterpret_cast<PFN_vkGetPhysicalDeviceQueueCount>(get_proc_addr(instance, "vkGetPhysicalDeviceQueueCount"));
-- if (UNLIKELY(!vtbl.GetPhysicalDeviceQueueCount)) {
-- ALOGE("missing instance proc: %s", "vkGetPhysicalDeviceQueueCount");
-- success = false;
-- }
-- vtbl.GetPhysicalDeviceQueueProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceQueueProperties>(get_proc_addr(instance, "vkGetPhysicalDeviceQueueProperties"));
-- if (UNLIKELY(!vtbl.GetPhysicalDeviceQueueProperties)) {
-- ALOGE("missing instance proc: %s", "vkGetPhysicalDeviceQueueProperties");
-+ vtbl.GetPhysicalDeviceQueueFamilyProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceQueueFamilyProperties>(get_proc_addr(instance, "vkGetPhysicalDeviceQueueFamilyProperties"));
-+ if (UNLIKELY(!vtbl.GetPhysicalDeviceQueueFamilyProperties)) {
-+ ALOGE("missing instance proc: %s", "vkGetPhysicalDeviceQueueFamilyProperties");
- success = false;
- }
- vtbl.GetPhysicalDeviceMemoryProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceMemoryProperties>(get_proc_addr(instance, "vkGetPhysicalDeviceMemoryProperties"));
-@@ -514,24 +494,19 @@ bool LoadInstanceVtbl(VkInstance instance,
- ALOGE("missing instance proc: %s", "vkGetPhysicalDeviceImageFormatProperties");
- success = false;
- }
-- vtbl.GetPhysicalDeviceLimits = reinterpret_cast<PFN_vkGetPhysicalDeviceLimits>(get_proc_addr(instance, "vkGetPhysicalDeviceLimits"));
-- if (UNLIKELY(!vtbl.GetPhysicalDeviceLimits)) {
-- ALOGE("missing instance proc: %s", "vkGetPhysicalDeviceLimits");
-- success = false;
-- }
- vtbl.CreateDevice = reinterpret_cast<PFN_vkCreateDevice>(get_proc_addr(instance, "vkCreateDevice"));
- if (UNLIKELY(!vtbl.CreateDevice)) {
- ALOGE("missing instance proc: %s", "vkCreateDevice");
- success = false;
- }
-- vtbl.GetPhysicalDeviceLayerProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceLayerProperties>(get_proc_addr(instance, "vkGetPhysicalDeviceLayerProperties"));
-- if (UNLIKELY(!vtbl.GetPhysicalDeviceLayerProperties)) {
-- ALOGE("missing instance proc: %s", "vkGetPhysicalDeviceLayerProperties");
-+ vtbl.EnumerateDeviceLayerProperties = reinterpret_cast<PFN_vkEnumerateDeviceLayerProperties>(get_proc_addr(instance, "vkEnumerateDeviceLayerProperties"));
-+ if (UNLIKELY(!vtbl.EnumerateDeviceLayerProperties)) {
-+ ALOGE("missing instance proc: %s", "vkEnumerateDeviceLayerProperties");
- success = false;
- }
-- vtbl.GetPhysicalDeviceExtensionProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceExtensionProperties>(get_proc_addr(instance, "vkGetPhysicalDeviceExtensionProperties"));
-- if (UNLIKELY(!vtbl.GetPhysicalDeviceExtensionProperties)) {
-- ALOGE("missing instance proc: %s", "vkGetPhysicalDeviceExtensionProperties");
-+ vtbl.EnumerateDeviceExtensionProperties = reinterpret_cast<PFN_vkEnumerateDeviceExtensionProperties>(get_proc_addr(instance, "vkEnumerateDeviceExtensionProperties"));
-+ if (UNLIKELY(!vtbl.EnumerateDeviceExtensionProperties)) {
-+ ALOGE("missing instance proc: %s", "vkEnumerateDeviceExtensionProperties");
- success = false;
- }
- vtbl.GetPhysicalDeviceSparseImageFormatProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceSparseImageFormatProperties>(get_proc_addr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties"));
-@@ -784,16 +759,6 @@ bool LoadDeviceVtbl(VkDevice device,
- ALOGE("missing device proc: %s", "vkDestroyImageView");
- success = false;
- }
-- vtbl.CreateAttachmentView = reinterpret_cast<PFN_vkCreateAttachmentView>(get_proc_addr(device, "vkCreateAttachmentView"));
-- if (UNLIKELY(!vtbl.CreateAttachmentView)) {
-- ALOGE("missing device proc: %s", "vkCreateAttachmentView");
-- success = false;
-- }
-- vtbl.DestroyAttachmentView = reinterpret_cast<PFN_vkDestroyAttachmentView>(get_proc_addr(device, "vkDestroyAttachmentView"));
-- if (UNLIKELY(!vtbl.DestroyAttachmentView)) {
-- ALOGE("missing device proc: %s", "vkDestroyAttachmentView");
-- success = false;
-- }
- vtbl.CreateShaderModule = reinterpret_cast<PFN_vkCreateShaderModule>(get_proc_addr(device, "vkCreateShaderModule"));
- if (UNLIKELY(!vtbl.CreateShaderModule)) {
- ALOGE("missing device proc: %s", "vkCreateShaderModule");
-@@ -914,46 +879,6 @@ bool LoadDeviceVtbl(VkDevice device,
- ALOGE("missing device proc: %s", "vkUpdateDescriptorSets");
- success = false;
- }
-- vtbl.CreateDynamicViewportState = reinterpret_cast<PFN_vkCreateDynamicViewportState>(get_proc_addr(device, "vkCreateDynamicViewportState"));
-- if (UNLIKELY(!vtbl.CreateDynamicViewportState)) {
-- ALOGE("missing device proc: %s", "vkCreateDynamicViewportState");
-- success = false;
-- }
-- vtbl.DestroyDynamicViewportState = reinterpret_cast<PFN_vkDestroyDynamicViewportState>(get_proc_addr(device, "vkDestroyDynamicViewportState"));
-- if (UNLIKELY(!vtbl.DestroyDynamicViewportState)) {
-- ALOGE("missing device proc: %s", "vkDestroyDynamicViewportState");
-- success = false;
-- }
-- vtbl.CreateDynamicRasterState = reinterpret_cast<PFN_vkCreateDynamicRasterState>(get_proc_addr(device, "vkCreateDynamicRasterState"));
-- if (UNLIKELY(!vtbl.CreateDynamicRasterState)) {
-- ALOGE("missing device proc: %s", "vkCreateDynamicRasterState");
-- success = false;
-- }
-- vtbl.DestroyDynamicRasterState = reinterpret_cast<PFN_vkDestroyDynamicRasterState>(get_proc_addr(device, "vkDestroyDynamicRasterState"));
-- if (UNLIKELY(!vtbl.DestroyDynamicRasterState)) {
-- ALOGE("missing device proc: %s", "vkDestroyDynamicRasterState");
-- success = false;
-- }
-- vtbl.CreateDynamicColorBlendState = reinterpret_cast<PFN_vkCreateDynamicColorBlendState>(get_proc_addr(device, "vkCreateDynamicColorBlendState"));
-- if (UNLIKELY(!vtbl.CreateDynamicColorBlendState)) {
-- ALOGE("missing device proc: %s", "vkCreateDynamicColorBlendState");
-- success = false;
-- }
-- vtbl.DestroyDynamicColorBlendState = reinterpret_cast<PFN_vkDestroyDynamicColorBlendState>(get_proc_addr(device, "vkDestroyDynamicColorBlendState"));
-- if (UNLIKELY(!vtbl.DestroyDynamicColorBlendState)) {
-- ALOGE("missing device proc: %s", "vkDestroyDynamicColorBlendState");
-- success = false;
-- }
-- vtbl.CreateDynamicDepthStencilState = reinterpret_cast<PFN_vkCreateDynamicDepthStencilState>(get_proc_addr(device, "vkCreateDynamicDepthStencilState"));
-- if (UNLIKELY(!vtbl.CreateDynamicDepthStencilState)) {
-- ALOGE("missing device proc: %s", "vkCreateDynamicDepthStencilState");
-- success = false;
-- }
-- vtbl.DestroyDynamicDepthStencilState = reinterpret_cast<PFN_vkDestroyDynamicDepthStencilState>(get_proc_addr(device, "vkDestroyDynamicDepthStencilState"));
-- if (UNLIKELY(!vtbl.DestroyDynamicDepthStencilState)) {
-- ALOGE("missing device proc: %s", "vkDestroyDynamicDepthStencilState");
-- success = false;
-- }
- vtbl.CreateFramebuffer = reinterpret_cast<PFN_vkCreateFramebuffer>(get_proc_addr(device, "vkCreateFramebuffer"));
- if (UNLIKELY(!vtbl.CreateFramebuffer)) {
- ALOGE("missing device proc: %s", "vkCreateFramebuffer");
-@@ -1024,24 +949,49 @@ bool LoadDeviceVtbl(VkDevice device,
- ALOGE("missing device proc: %s", "vkCmdBindPipeline");
- success = false;
- }
-- vtbl.CmdBindDynamicViewportState = reinterpret_cast<PFN_vkCmdBindDynamicViewportState>(get_proc_addr(device, "vkCmdBindDynamicViewportState"));
-- if (UNLIKELY(!vtbl.CmdBindDynamicViewportState)) {
-- ALOGE("missing device proc: %s", "vkCmdBindDynamicViewportState");
-+ vtbl.CmdSetViewport = reinterpret_cast<PFN_vkCmdSetViewport>(get_proc_addr(device, "vkCmdSetViewport"));
-+ if (UNLIKELY(!vtbl.CmdSetViewport)) {
-+ ALOGE("missing device proc: %s", "vkCmdSetViewport");
-+ success = false;
-+ }
-+ vtbl.CmdSetScissor = reinterpret_cast<PFN_vkCmdSetScissor>(get_proc_addr(device, "vkCmdSetScissor"));
-+ if (UNLIKELY(!vtbl.CmdSetScissor)) {
-+ ALOGE("missing device proc: %s", "vkCmdSetScissor");
-+ success = false;
-+ }
-+ vtbl.CmdSetLineWidth = reinterpret_cast<PFN_vkCmdSetLineWidth>(get_proc_addr(device, "vkCmdSetLineWidth"));
-+ if (UNLIKELY(!vtbl.CmdSetLineWidth)) {
-+ ALOGE("missing device proc: %s", "vkCmdSetLineWidth");
-+ success = false;
-+ }
-+ vtbl.CmdSetDepthBias = reinterpret_cast<PFN_vkCmdSetDepthBias>(get_proc_addr(device, "vkCmdSetDepthBias"));
-+ if (UNLIKELY(!vtbl.CmdSetDepthBias)) {
-+ ALOGE("missing device proc: %s", "vkCmdSetDepthBias");
-+ success = false;
-+ }
-+ vtbl.CmdSetBlendConstants = reinterpret_cast<PFN_vkCmdSetBlendConstants>(get_proc_addr(device, "vkCmdSetBlendConstants"));
-+ if (UNLIKELY(!vtbl.CmdSetBlendConstants)) {
-+ ALOGE("missing device proc: %s", "vkCmdSetBlendConstants");
-+ success = false;
-+ }
-+ vtbl.CmdSetDepthBounds = reinterpret_cast<PFN_vkCmdSetDepthBounds>(get_proc_addr(device, "vkCmdSetDepthBounds"));
-+ if (UNLIKELY(!vtbl.CmdSetDepthBounds)) {
-+ ALOGE("missing device proc: %s", "vkCmdSetDepthBounds");
- success = false;
- }
-- vtbl.CmdBindDynamicRasterState = reinterpret_cast<PFN_vkCmdBindDynamicRasterState>(get_proc_addr(device, "vkCmdBindDynamicRasterState"));
-- if (UNLIKELY(!vtbl.CmdBindDynamicRasterState)) {
-- ALOGE("missing device proc: %s", "vkCmdBindDynamicRasterState");
-+ vtbl.CmdSetStencilCompareMask = reinterpret_cast<PFN_vkCmdSetStencilCompareMask>(get_proc_addr(device, "vkCmdSetStencilCompareMask"));
-+ if (UNLIKELY(!vtbl.CmdSetStencilCompareMask)) {
-+ ALOGE("missing device proc: %s", "vkCmdSetStencilCompareMask");
- success = false;
- }
-- vtbl.CmdBindDynamicColorBlendState = reinterpret_cast<PFN_vkCmdBindDynamicColorBlendState>(get_proc_addr(device, "vkCmdBindDynamicColorBlendState"));
-- if (UNLIKELY(!vtbl.CmdBindDynamicColorBlendState)) {
-- ALOGE("missing device proc: %s", "vkCmdBindDynamicColorBlendState");
-+ vtbl.CmdSetStencilWriteMask = reinterpret_cast<PFN_vkCmdSetStencilWriteMask>(get_proc_addr(device, "vkCmdSetStencilWriteMask"));
-+ if (UNLIKELY(!vtbl.CmdSetStencilWriteMask)) {
-+ ALOGE("missing device proc: %s", "vkCmdSetStencilWriteMask");
- success = false;
- }
-- vtbl.CmdBindDynamicDepthStencilState = reinterpret_cast<PFN_vkCmdBindDynamicDepthStencilState>(get_proc_addr(device, "vkCmdBindDynamicDepthStencilState"));
-- if (UNLIKELY(!vtbl.CmdBindDynamicDepthStencilState)) {
-- ALOGE("missing device proc: %s", "vkCmdBindDynamicDepthStencilState");
-+ vtbl.CmdSetStencilReference = reinterpret_cast<PFN_vkCmdSetStencilReference>(get_proc_addr(device, "vkCmdSetStencilReference"));
-+ if (UNLIKELY(!vtbl.CmdSetStencilReference)) {
-+ ALOGE("missing device proc: %s", "vkCmdSetStencilReference");
- success = false;
- }
- vtbl.CmdBindDescriptorSets = reinterpret_cast<PFN_vkCmdBindDescriptorSets>(get_proc_addr(device, "vkCmdBindDescriptorSets"));
-diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
-index 97ceb4a..f608c57 100644
---- a/vulkan/libvulkan/loader.cpp
-+++ b/vulkan/libvulkan/loader.cpp
-@@ -257,12 +257,12 @@ void FindLayersInDirectory(
- }
-
- // Get Layers in so
-- PFN_vkGetGlobalLayerProperties get_layer_properties =
-- reinterpret_cast<PFN_vkGetGlobalLayerProperties>(
-- dlsym(layer_handle, "vkGetGlobalLayerProperties"));
-+ PFN_vkEnumerateInstanceLayerProperties get_layer_properties =
-+ reinterpret_cast<PFN_vkEnumerateInstanceLayerProperties>(
-+ dlsym(layer_handle, "vkEnumerateInstanceLayerProperties"));
- if (!get_layer_properties) {
- ALOGE(
-- "%s failed to find vkGetGlobalLayerProperties with "
-+ "%s failed to find vkEnumerateInstanceLayerProperties with "
- "error %s; Skipping",
- entry->d_name, dlerror());
- dlclose(layer_handle);
-@@ -353,7 +353,7 @@ void LogDebugMessageCallback(VkFlags message_flags,
- // "Bottom" functions. These are called at the end of the instance dispatch
- // chain.
-
--VkResult DestroyInstanceBottom(VkInstance instance) {
-+void DestroyInstanceBottom(VkInstance instance) {
- // These checks allow us to call DestroyInstanceBottom from any error path
- // in CreateInstanceBottom, before the driver instance is fully initialized.
- if (instance->drv.vtbl.instance != VK_NULL_HANDLE &&
-@@ -372,7 +372,6 @@ VkResult DestroyInstanceBottom(VkInstance instance) {
- const VkAllocCallbacks* alloc = instance->alloc;
- instance->~VkInstance_T();
- alloc->pfnFree(alloc->pUserData, instance);
-- return VK_SUCCESS;
- }
-
- VkResult CreateInstanceBottom(const VkInstanceCreateInfo* create_info,
-@@ -484,16 +483,11 @@ VkResult GetPhysicalDeviceImageFormatPropertiesBottom(
- VkImageType type,
- VkImageTiling tiling,
- VkImageUsageFlags usage,
-+ VkImageCreateFlags flags,
- VkImageFormatProperties* properties) {
- return GetVtbl(pdev)
- ->instance->drv.vtbl.GetPhysicalDeviceImageFormatProperties(
-- pdev, format, type, tiling, usage, properties);
--}
--
--VkResult GetPhysicalDeviceLimitsBottom(VkPhysicalDevice pdev,
-- VkPhysicalDeviceLimits* limits) {
-- return GetVtbl(pdev)
-- ->instance->drv.vtbl.GetPhysicalDeviceLimits(pdev, limits);
-+ pdev, format, type, tiling, usage, flags, properties);
- }
-
- VkResult GetPhysicalDevicePropertiesBottom(
-@@ -503,18 +497,13 @@ VkResult GetPhysicalDevicePropertiesBottom(
- ->instance->drv.vtbl.GetPhysicalDeviceProperties(pdev, properties);
- }
-
--VkResult GetPhysicalDeviceQueueCountBottom(VkPhysicalDevice pdev,
-- uint32_t* count) {
-- return GetVtbl(pdev)
-- ->instance->drv.vtbl.GetPhysicalDeviceQueueCount(pdev, count);
--}
--
--VkResult GetPhysicalDeviceQueuePropertiesBottom(
-+VkResult GetPhysicalDeviceQueueFamilyPropertiesBottom(
- VkPhysicalDevice pdev,
-- uint32_t count,
-- VkPhysicalDeviceQueueProperties* properties) {
-- return GetVtbl(pdev)->instance->drv.vtbl.GetPhysicalDeviceQueueProperties(
-- pdev, count, properties);
-+ uint32_t* pCount,
-+ VkQueueFamilyProperties* properties) {
-+ return GetVtbl(pdev)
-+ ->instance->drv.vtbl.GetPhysicalDeviceQueueFamilyProperties(
-+ pdev, pCount, properties);
- }
-
- VkResult GetPhysicalDeviceMemoryPropertiesBottom(
-@@ -618,21 +607,20 @@ VkResult CreateDeviceBottom(VkPhysicalDevice pdev,
- return VK_SUCCESS;
- }
-
--VkResult GetPhysicalDeviceExtensionPropertiesBottom(
-+VkResult EnumerateDeviceExtensionPropertiesBottom(
- VkPhysicalDevice pdev,
- const char* layer_name,
- uint32_t* properties_count,
- VkExtensionProperties* properties) {
- // TODO: what are we supposed to do with layer_name here?
-- return GetVtbl(pdev)
-- ->instance->drv.vtbl.GetPhysicalDeviceExtensionProperties(
-- pdev, layer_name, properties_count, properties);
-+ return GetVtbl(pdev)->instance->drv.vtbl.EnumerateDeviceExtensionProperties(
-+ pdev, layer_name, properties_count, properties);
- }
-
--VkResult GetPhysicalDeviceLayerPropertiesBottom(VkPhysicalDevice pdev,
-- uint32_t* properties_count,
-- VkLayerProperties* properties) {
-- return GetVtbl(pdev)->instance->drv.vtbl.GetPhysicalDeviceLayerProperties(
-+VkResult EnumerateDeviceLayerPropertiesBottom(VkPhysicalDevice pdev,
-+ uint32_t* properties_count,
-+ VkLayerProperties* properties) {
-+ return GetVtbl(pdev)->instance->drv.vtbl.EnumerateDeviceLayerProperties(
- pdev, properties_count, properties);
- }
-
-@@ -663,14 +651,12 @@ const InstanceVtbl kBottomInstanceFunctions = {
- .GetPhysicalDeviceFeatures = GetPhysicalDeviceFeaturesBottom,
- .GetPhysicalDeviceFormatProperties = GetPhysicalDeviceFormatPropertiesBottom,
- .GetPhysicalDeviceImageFormatProperties = GetPhysicalDeviceImageFormatPropertiesBottom,
-- .GetPhysicalDeviceLimits = GetPhysicalDeviceLimitsBottom,
- .GetPhysicalDeviceProperties = GetPhysicalDevicePropertiesBottom,
-- .GetPhysicalDeviceQueueCount = GetPhysicalDeviceQueueCountBottom,
-- .GetPhysicalDeviceQueueProperties = GetPhysicalDeviceQueuePropertiesBottom,
-+ .GetPhysicalDeviceQueueFamilyProperties = GetPhysicalDeviceQueueFamilyPropertiesBottom,
- .GetPhysicalDeviceMemoryProperties = GetPhysicalDeviceMemoryPropertiesBottom,
- .CreateDevice = CreateDeviceBottom,
-- .GetPhysicalDeviceExtensionProperties = GetPhysicalDeviceExtensionPropertiesBottom,
-- .GetPhysicalDeviceLayerProperties = GetPhysicalDeviceLayerPropertiesBottom,
-+ .EnumerateDeviceExtensionProperties = EnumerateDeviceExtensionPropertiesBottom,
-+ .EnumerateDeviceLayerProperties = EnumerateDeviceLayerPropertiesBottom,
- .GetPhysicalDeviceSparseImageFormatProperties = GetPhysicalDeviceSparseImageFormatPropertiesBottom,
- .GetPhysicalDeviceSurfaceSupportKHR = GetPhysicalDeviceSurfaceSupportKHR,
- // clang-format on
-@@ -701,30 +687,27 @@ PFN_vkVoidFunction GetInstanceProcAddrBottom(VkInstance, const char* name) {
-
- namespace vulkan {
-
--VkResult GetGlobalExtensionProperties(const char* /*layer_name*/,
-- uint32_t* count,
-- VkExtensionProperties* /*properties*/) {
-- if (!count)
-- return VK_ERROR_INVALID_POINTER;
-+VkResult EnumerateInstanceExtensionProperties(
-+ const char* /*layer_name*/,
-+ uint32_t* count,
-+ VkExtensionProperties* /*properties*/) {
- if (!EnsureInitialized())
-- return VK_ERROR_UNAVAILABLE;
-+ return VK_ERROR_INITIALIZATION_FAILED;
-
- // TODO: not yet implemented
-- ALOGW("vkGetGlobalExtensionProperties not implemented");
-+ ALOGW("vkEnumerateInstanceExtensionProperties not implemented");
-
- *count = 0;
- return VK_SUCCESS;
- }
-
--VkResult GetGlobalLayerProperties(uint32_t* count,
-- VkLayerProperties* /*properties*/) {
-- if (!count)
-- return VK_ERROR_INVALID_POINTER;
-+VkResult EnumerateInstanceLayerProperties(uint32_t* count,
-+ VkLayerProperties* /*properties*/) {
- if (!EnsureInitialized())
-- return VK_ERROR_UNAVAILABLE;
-+ return VK_ERROR_INITIALIZATION_FAILED;
-
- // TODO: not yet implemented
-- ALOGW("vkGetGlobalLayerProperties not implemented");
-+ ALOGW("vkEnumerateInstanceLayerProperties not implemented");
-
- *count = 0;
- return VK_SUCCESS;
-@@ -735,7 +718,7 @@ VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
- VkResult result;
-
- if (!EnsureInitialized())
-- return VK_ERROR_UNAVAILABLE;
-+ return VK_ERROR_INITIALIZATION_FAILED;
-
- VkInstanceCreateInfo local_create_info = *create_info;
- if (!local_create_info.pAllocCb)
-diff --git a/vulkan/libvulkan/loader.h b/vulkan/libvulkan/loader.h
-index 5933eb2..ef3d1f1 100644
---- a/vulkan/libvulkan/loader.h
-+++ b/vulkan/libvulkan/loader.h
-@@ -43,14 +43,12 @@ struct InstanceVtbl {
- PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures;
- PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties;
- PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties;
-- PFN_vkGetPhysicalDeviceLimits GetPhysicalDeviceLimits;
- PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
-- PFN_vkGetPhysicalDeviceQueueCount GetPhysicalDeviceQueueCount;
-- PFN_vkGetPhysicalDeviceQueueProperties GetPhysicalDeviceQueueProperties;
-+ PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties;
- PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties;
- PFN_vkCreateDevice CreateDevice;
-- PFN_vkGetPhysicalDeviceExtensionProperties GetPhysicalDeviceExtensionProperties;
-- PFN_vkGetPhysicalDeviceLayerProperties GetPhysicalDeviceLayerProperties;
-+ PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
-+ PFN_vkEnumerateDeviceLayerProperties EnumerateDeviceLayerProperties;
- PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties;
-
- // Layers and loader only, not implemented by drivers
-@@ -101,8 +99,6 @@ struct DeviceVtbl {
- PFN_vkGetImageSubresourceLayout GetImageSubresourceLayout;
- PFN_vkCreateImageView CreateImageView;
- PFN_vkDestroyImageView DestroyImageView;
-- PFN_vkCreateAttachmentView CreateAttachmentView;
-- PFN_vkDestroyAttachmentView DestroyAttachmentView;
- PFN_vkCreateShaderModule CreateShaderModule;
- PFN_vkDestroyShaderModule DestroyShaderModule;
- PFN_vkCreateShader CreateShader;
-@@ -127,14 +123,6 @@ struct DeviceVtbl {
- PFN_vkAllocDescriptorSets AllocDescriptorSets;
- PFN_vkFreeDescriptorSets FreeDescriptorSets;
- PFN_vkUpdateDescriptorSets UpdateDescriptorSets;
-- PFN_vkCreateDynamicViewportState CreateDynamicViewportState;
-- PFN_vkDestroyDynamicViewportState DestroyDynamicViewportState;
-- PFN_vkCreateDynamicRasterState CreateDynamicRasterState;
-- PFN_vkDestroyDynamicRasterState DestroyDynamicRasterState;
-- PFN_vkCreateDynamicColorBlendState CreateDynamicColorBlendState;
-- PFN_vkDestroyDynamicColorBlendState DestroyDynamicColorBlendState;
-- PFN_vkCreateDynamicDepthStencilState CreateDynamicDepthStencilState;
-- PFN_vkDestroyDynamicDepthStencilState DestroyDynamicDepthStencilState;
- PFN_vkCreateFramebuffer CreateFramebuffer;
- PFN_vkDestroyFramebuffer DestroyFramebuffer;
- PFN_vkCreateRenderPass CreateRenderPass;
-@@ -158,10 +146,15 @@ struct DeviceVtbl {
- PFN_vkEndCommandBuffer EndCommandBuffer;
- PFN_vkResetCommandBuffer ResetCommandBuffer;
- PFN_vkCmdBindPipeline CmdBindPipeline;
-- PFN_vkCmdBindDynamicViewportState CmdBindDynamicViewportState;
-- PFN_vkCmdBindDynamicRasterState CmdBindDynamicRasterState;
-- PFN_vkCmdBindDynamicColorBlendState CmdBindDynamicColorBlendState;
-- PFN_vkCmdBindDynamicDepthStencilState CmdBindDynamicDepthStencilState;
-+ PFN_vkCmdSetViewport CmdSetViewport;
-+ PFN_vkCmdSetScissor CmdSetScissor;
-+ PFN_vkCmdSetLineWidth CmdSetLineWidth;
-+ PFN_vkCmdSetDepthBias CmdSetDepthBias;
-+ PFN_vkCmdSetBlendConstants CmdSetBlendConstants;
-+ PFN_vkCmdSetDepthBounds CmdSetDepthBounds;
-+ PFN_vkCmdSetStencilCompareMask CmdSetStencilCompareMask;
-+ PFN_vkCmdSetStencilWriteMask CmdSetStencilWriteMask;
-+ PFN_vkCmdSetStencilReference CmdSetStencilReference;
- PFN_vkCmdBindDescriptorSets CmdBindDescriptorSets;
- PFN_vkCmdBindIndexBuffer CmdBindIndexBuffer;
- PFN_vkCmdBindVertexBuffers CmdBindVertexBuffers;
-@@ -216,11 +209,12 @@ struct DeviceVtbl {
- // -----------------------------------------------------------------------------
- // loader.cpp
-
--VkResult GetGlobalExtensionProperties(const char* layer_name,
-- uint32_t* count,
-- VkExtensionProperties* properties);
--VkResult GetGlobalLayerProperties(uint32_t* count,
-- VkLayerProperties* properties);
-+VkResult EnumerateInstanceExtensionProperties(
-+ const char* layer_name,
-+ uint32_t* count,
-+ VkExtensionProperties* properties);
-+VkResult EnumerateInstanceLayerProperties(uint32_t* count,
-+ VkLayerProperties* properties);
- VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
- VkInstance* instance);
- PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* name);
-diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
-index af3d585..6320192 100644
---- a/vulkan/libvulkan/swapchain.cpp
-+++ b/vulkan/libvulkan/swapchain.cpp
-@@ -27,6 +27,11 @@
-
- using namespace vulkan;
-
-+// TODO(jessehall): Currently we don't have a good error code for when a native
-+// window operation fails. Just returning INITIALIZATION_FAILED for now. Later
-+// versions (post SDK 0.9) of the API/extension have a better error code.
-+// When updating to that version, audit all error returns.
-+
- namespace {
-
- // ----------------------------------------------------------------------------
-@@ -118,8 +123,11 @@ VkResult GetPhysicalDeviceSurfaceSupportKHR(
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wold-style-cast"
- #pragma clang diagnostic ignored "-Wsign-conversion"
-- if (surface_desc->sType != VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_KHR)
-- return VK_ERROR_INVALID_VALUE;
-+ ALOGE_IF(
-+ surface_desc->sType != VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_KHR,
-+ "vkGetPhysicalDeviceSurfaceSupportKHR: pSurfaceDescription->sType=%#x "
-+ "not supported",
-+ surface_desc->sType);
- #pragma clang diagnostic pop
-
- const VkSurfaceDescriptionWindowKHR* window_desc =
-@@ -170,7 +178,7 @@ VkResult GetSurfacePropertiesKHR(VkDevice /*device*/,
- } else if (err != 0) {
- // TODO(jessehall): Improve error reporting. Can we enumerate possible
- // errors and translate them to valid Vulkan result codes?
-- return VK_ERROR_UNKNOWN;
-+ return VK_ERROR_INITIALIZATION_FAILED;
- }
-
- int width, height;
-@@ -180,7 +188,7 @@ VkResult GetSurfacePropertiesKHR(VkDevice /*device*/,
- strerror(-err), err);
- if (disconnect)
- native_window_api_disconnect(window, NATIVE_WINDOW_API_EGL);
-- return VK_ERROR_UNKNOWN;
-+ return VK_ERROR_INITIALIZATION_FAILED;
- }
- err = window->query(window, NATIVE_WINDOW_DEFAULT_HEIGHT, &height);
- if (err != 0) {
-@@ -188,7 +196,7 @@ VkResult GetSurfacePropertiesKHR(VkDevice /*device*/,
- strerror(-err), err);
- if (disconnect)
- native_window_api_disconnect(window, NATIVE_WINDOW_API_EGL);
-- return VK_ERROR_UNKNOWN;
-+ return VK_ERROR_INITIALIZATION_FAILED;
- }
-
- if (disconnect)
-@@ -311,7 +319,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
- // errors and translate them to valid Vulkan result codes?
- ALOGE("native_window_api_connect() failed: %s (%d)", strerror(-err),
- err);
-- return VK_ERROR_UNKNOWN;
-+ return VK_ERROR_INITIALIZATION_FAILED;
- }
-
- err = native_window_set_buffers_dimensions(window.get(),
-@@ -324,7 +332,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
- create_info->imageExtent.width, create_info->imageExtent.height,
- strerror(-err), err);
- native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_EGL);
-- return VK_ERROR_UNKNOWN;
-+ return VK_ERROR_INITIALIZATION_FAILED;
- }
-
- uint32_t min_undequeued_buffers;
-@@ -335,7 +343,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
- // errors and translate them to valid Vulkan result codes?
- ALOGE("window->query failed: %s (%d)", strerror(-err), err);
- native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_EGL);
-- return VK_ERROR_UNKNOWN;
-+ return VK_ERROR_INITIALIZATION_FAILED;
- }
- uint32_t num_images =
- (create_info->minImageCount - 1) + min_undequeued_buffers;
-@@ -346,7 +354,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
- ALOGE("native_window_set_buffer_count failed: %s (%d)", strerror(-err),
- err);
- native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_EGL);
-- return VK_ERROR_UNKNOWN;
-+ return VK_ERROR_INITIALIZATION_FAILED;
- }
-
- // TODO(jessehall): Do we need to call modify native_window_set_usage()
-@@ -401,7 +409,7 @@ VkResult CreateSwapchainKHR(VkDevice device,
- // TODO(jessehall): Improve error reporting. Can we enumerate
- // possible errors and translate them to valid Vulkan result codes?
- ALOGE("dequeueBuffer[%u] failed: %s (%d)", i, strerror(-err), err);
-- result = VK_ERROR_UNKNOWN;
-+ result = VK_ERROR_INITIALIZATION_FAILED;
- break;
- }
- img.buffer = InitSharedPtr(device, buffer);
-@@ -517,7 +525,7 @@ VkResult AcquireNextImageKHR(VkDevice device,
- // TODO(jessehall): Improve error reporting. Can we enumerate possible
- // errors and translate them to valid Vulkan result codes?
- ALOGE("dequeueBuffer failed: %s (%d)", strerror(-err), err);
-- return VK_ERROR_UNKNOWN;
-+ return VK_ERROR_INITIALIZATION_FAILED;
- }
-
- uint32_t idx;
-@@ -582,20 +590,10 @@ VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info) {
- Swapchain& swapchain =
- *SwapchainFromHandle(present_info->swapchains[sc]);
- uint32_t image_idx = present_info->imageIndices[sc];
-+ Swapchain::Image& img = swapchain.images[image_idx];
- VkResult result;
- int err;
-
-- if (image_idx >= swapchain.num_images ||
-- !swapchain.images[image_idx].dequeued) {
-- ALOGE(
-- "invalid image index or image not acquired: swapchain=%u "
-- "index=%u",
-- sc, image_idx);
-- final_result = VK_ERROR_INVALID_VALUE;
-- continue;
-- }
-- Swapchain::Image& img = swapchain.images[image_idx];
--
- int fence = -1;
- result = driver_vtbl.QueueSignalNativeFenceANDROID(queue, &fence);
- if (result != VK_SUCCESS) {
-@@ -616,7 +614,7 @@ VkResult QueuePresentKHR(VkQueue queue, VkPresentInfoKHR* present_info) {
- // I guess?
- ALOGE("queueBuffer failed: %s (%d)", strerror(-err), err);
- if (final_result == VK_SUCCESS)
-- final_result = VK_ERROR_UNKNOWN;
-+ final_result = VK_ERROR_INITIALIZATION_FAILED;
- continue;
- }
-
-diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
-index 8f65156..a7b66dd 100644
---- a/vulkan/nulldrv/null_driver.cpp
-+++ b/vulkan/nulldrv/null_driver.cpp
-@@ -66,16 +66,11 @@ namespace {
- // constants but also want implicit conversions to integral types.
- namespace HandleType {
- enum Enum {
-- kAttachmentView,
- kBufferView,
- kCmdPool,
- kDescriptorPool,
- kDescriptorSet,
- kDescriptorSetLayout,
-- kDynamicColorBlendState,
-- kDynamicDepthStencilState,
-- kDynamicRasterState,
-- kDynamicViewportState,
- kEvent,
- kFence,
- kFramebuffer,
-@@ -170,7 +165,8 @@ hwvulkan_device_t nulldrv_device = {
- .module = &HAL_MODULE_INFO_SYM.common,
- .close = CloseDevice,
- },
-- .GetGlobalExtensionProperties = GetGlobalExtensionProperties,
-+ .EnumerateInstanceExtensionProperties =
-+ EnumerateInstanceExtensionProperties,
- .CreateInstance = CreateInstance,
- .GetInstanceProcAddr = GetInstanceProcAddr};
-
-@@ -221,9 +217,9 @@ typename T::HandleType GetHandleToObject(const T* obj) {
- // -----------------------------------------------------------------------------
- // Global
-
--VkResult GetGlobalExtensionProperties(const char*,
-- uint32_t* count,
-- VkExtensionProperties*) {
-+VkResult EnumerateInstanceExtensionProperties(const char*,
-+ uint32_t* count,
-+ VkExtensionProperties*) {
- *count = 0;
- return VK_SUCCESS;
- }
-@@ -271,8 +267,8 @@ VkResult GetPhysicalDeviceProperties(VkPhysicalDevice,
- VkPhysicalDeviceProperties* properties) {
- properties->apiVersion = VK_API_VERSION;
- properties->driverVersion = VK_MAKE_VERSION(0, 0, 1);
-- properties->vendorId = 0xC0DE;
-- properties->deviceId = 0xCAFE;
-+ properties->vendorId = 0;
-+ properties->deviceId = 0;
- properties->deviceType = VK_PHYSICAL_DEVICE_TYPE_OTHER;
- strcpy(properties->deviceName, "Android Vulkan Null Driver");
- memset(properties->pipelineCacheUUID, 0,
-@@ -280,6 +276,22 @@ VkResult GetPhysicalDeviceProperties(VkPhysicalDevice,
- return VK_SUCCESS;
- }
-
-+VkResult GetPhysicalDeviceQueueFamilyProperties(
-+ VkPhysicalDevice,
-+ uint32_t* count,
-+ VkQueueFamilyProperties* properties) {
-+ if (properties) {
-+ if (*count < 1)
-+ return VK_INCOMPLETE;
-+ properties->queueFlags =
-+ VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_DMA_BIT;
-+ properties->queueCount = 1;
-+ properties->supportsTimestamps = VK_FALSE;
-+ }
-+ *count = 1;
-+ return VK_SUCCESS;
-+}
-+
- VkResult GetPhysicalDeviceMemoryProperties(
- VkPhysicalDevice,
- VkPhysicalDeviceMemoryProperties* properties) {
-@@ -289,7 +301,7 @@ VkResult GetPhysicalDeviceMemoryProperties(
- properties->memoryTypes[0].heapIndex = 0;
- properties->memoryHeapCount = 1;
- properties->memoryHeaps[0].size = kMaxDeviceMemory;
-- properties->memoryHeaps[0].flags = VK_MEMORY_HEAP_HOST_LOCAL;
-+ properties->memoryHeaps[0].flags = VK_MEMORY_HEAP_HOST_LOCAL_BIT;
- return VK_SUCCESS;
- }
-
-@@ -470,7 +482,7 @@ VkResult CreateImage(VkDevice device,
- ALOGE("CreateImage: not yet implemented: type=%d format=%d mips=%u",
- create_info->imageType, create_info->format,
- create_info->mipLevels);
-- return VK_ERROR_UNAVAILABLE;
-+ return VK_UNSUPPORTED;
- }
-
- VkDeviceSize size =
-@@ -512,13 +524,6 @@ VkResult DestroyImage(VkDevice device, VkImage image_handle) {
- // -----------------------------------------------------------------------------
- // No-op types
-
--VkResult CreateAttachmentView(VkDevice device,
-- const VkAttachmentViewCreateInfo*,
-- VkAttachmentView* view) {
-- *view = AllocHandle(device, HandleType::kAttachmentView);
-- return VK_SUCCESS;
--}
--
- VkResult CreateBufferView(VkDevice device,
- const VkBufferViewCreateInfo*,
- VkBufferView* view) {
-@@ -534,8 +539,6 @@ VkResult CreateCommandPool(VkDevice device,
- }
-
- VkResult CreateDescriptorPool(VkDevice device,
-- VkDescriptorPoolUsage,
-- uint32_t,
- const VkDescriptorPoolCreateInfo*,
- VkDescriptorPool* pool) {
- *pool = AllocHandle(device, HandleType::kDescriptorPool);
-@@ -562,35 +565,6 @@ VkResult CreateDescriptorSetLayout(VkDevice device,
- return VK_SUCCESS;
- }
-
--VkResult CreateDynamicColorBlendState(VkDevice device,
-- const VkDynamicColorBlendStateCreateInfo*,
-- VkDynamicColorBlendState* state) {
-- *state = AllocHandle(device, HandleType::kDynamicColorBlendState);
-- return VK_SUCCESS;
--}
--
--VkResult CreateDynamicDepthStencilState(
-- VkDevice device,
-- const VkDynamicDepthStencilStateCreateInfo*,
-- VkDynamicDepthStencilState* state) {
-- *state = AllocHandle(device, HandleType::kDynamicDepthStencilState);
-- return VK_SUCCESS;
--}
--
--VkResult CreateDynamicRasterState(VkDevice device,
-- const VkDynamicRasterStateCreateInfo*,
-- VkDynamicRasterState* state) {
-- *state = AllocHandle(device, HandleType::kDynamicRasterState);
-- return VK_SUCCESS;
--}
--
--VkResult CreateDynamicViewportState(VkDevice device,
-- const VkDynamicViewportStateCreateInfo*,
-- VkDynamicViewportState* state) {
-- *state = AllocHandle(device, HandleType::kDynamicViewportState);
-- return VK_SUCCESS;
--}
--
- VkResult CreateEvent(VkDevice device,
- const VkEventCreateInfo*,
- VkEvent* event) {
-@@ -712,16 +686,6 @@ VkResult QueueSignalNativeFenceANDROID(VkQueue, int* fence) {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wunused-parameter"
-
--VkResult GetPhysicalDeviceQueueCount(VkPhysicalDevice physicalDevice, uint32_t* pCount) {
-- ALOGV("TODO: vk%s", __FUNCTION__);
-- return VK_SUCCESS;
--}
--
--VkResult GetPhysicalDeviceQueueProperties(VkPhysicalDevice physicalDevice, uint32_t count, VkPhysicalDeviceQueueProperties* pQueueProperties) {
-- ALOGV("TODO: vk%s", __FUNCTION__);
-- return VK_SUCCESS;
--}
--
- VkResult GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) {
- ALOGV("TODO: vk%s", __FUNCTION__);
- return VK_SUCCESS;
-@@ -742,17 +706,17 @@ VkResult GetPhysicalDeviceLimits(VkPhysicalDevice physicalDevice, VkPhysicalDevi
- return VK_SUCCESS;
- }
-
--VkResult GetGlobalLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties) {
-+VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties) {
- ALOGV("TODO: vk%s", __FUNCTION__);
- return VK_SUCCESS;
- }
-
--VkResult GetPhysicalDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties) {
-+VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties) {
- ALOGV("TODO: vk%s", __FUNCTION__);
- return VK_SUCCESS;
- }
-
--VkResult GetPhysicalDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) {
-+VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) {
- ALOGV("TODO: vk%s", __FUNCTION__);
- return VK_SUCCESS;
- }
-@@ -894,10 +858,6 @@ VkResult DestroyImageView(VkDevice device, VkImageView imageView) {
- return VK_SUCCESS;
- }
-
--VkResult DestroyAttachmentView(VkDevice device, VkAttachmentView attachmentView) {
-- return VK_SUCCESS;
--}
--
- VkResult DestroyShaderModule(VkDevice device, VkShaderModule shaderModule) {
- return VK_SUCCESS;
- }
-@@ -960,22 +920,6 @@ VkResult FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, ui
- return VK_SUCCESS;
- }
-
--VkResult DestroyDynamicViewportState(VkDevice device, VkDynamicViewportState dynamicViewportState) {
-- return VK_SUCCESS;
--}
--
--VkResult DestroyDynamicRasterState(VkDevice device, VkDynamicRasterState dynamicRasterState) {
-- return VK_SUCCESS;
--}
--
--VkResult DestroyDynamicColorBlendState(VkDevice device, VkDynamicColorBlendState dynamicColorBlendState) {
-- return VK_SUCCESS;
--}
--
--VkResult DestroyDynamicDepthStencilState(VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState) {
-- return VK_SUCCESS;
--}
--
- VkResult DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer) {
- return VK_SUCCESS;
- }
-@@ -1014,16 +958,31 @@ VkResult ResetCommandBuffer(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags)
- void CmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
- }
-
--void CmdBindDynamicViewportState(VkCmdBuffer cmdBuffer, VkDynamicViewportState dynamicViewportState) {
-+void CmdSetViewport(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports) {
-+}
-+
-+void CmdSetScissor(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors) {
-+}
-+
-+void CmdSetLineWidth(VkCmdBuffer cmdBuffer, float lineWidth) {
-+}
-+
-+void CmdSetDepthBias(VkCmdBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias) {
-+}
-+
-+void CmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConst[4]) {
-+}
-+
-+void CmdSetDepthBounds(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds) {
- }
-
--void CmdBindDynamicRasterState(VkCmdBuffer cmdBuffer, VkDynamicRasterState dynamicRasterState) {
-+void CmdSetStencilCompareMask(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask) {
- }
-
--void CmdBindDynamicColorBlendState(VkCmdBuffer cmdBuffer, VkDynamicColorBlendState dynamicColorBlendState) {
-+void CmdSetStencilWriteMask(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask) {
- }
-
--void CmdBindDynamicDepthStencilState(VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState dynamicDepthStencilState) {
-+void CmdSetStencilReference(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference) {
- }
-
- void CmdBindDescriptorSets(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
-@@ -1077,13 +1036,13 @@ void CmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize dest
- void CmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
- }
-
--void CmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
-+void CmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
- }
-
- void CmdClearColorAttachment(VkCmdBuffer cmdBuffer, uint32_t colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rectCount, const VkRect3D* pRects) {
- }
-
--void CmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rectCount, const VkRect3D* pRects) {
-+void CmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags aspectMask, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rectCount, const VkRect3D* pRects) {
- }
-
- void CmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) {
-diff --git a/vulkan/nulldrv/null_driver.h b/vulkan/nulldrv/null_driver.h
-index 6bfbda5..9c26f0e 100644
---- a/vulkan/nulldrv/null_driver.h
-+++ b/vulkan/nulldrv/null_driver.h
-@@ -31,8 +31,7 @@ VkResult DestroyInstance(VkInstance instance);
- VkResult EnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
- PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* pName);
- VkResult GetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
--VkResult GetPhysicalDeviceQueueCount(VkPhysicalDevice physicalDevice, uint32_t* pCount);
--VkResult GetPhysicalDeviceQueueProperties(VkPhysicalDevice physicalDevice, uint32_t count, VkPhysicalDeviceQueueProperties* pQueueProperties);
-+VkResult GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkQueueFamilyProperties* pQueueFamilyProperties);
- VkResult GetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
- PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName);
- VkResult GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
-@@ -41,10 +40,10 @@ VkResult GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice,
- VkResult GetPhysicalDeviceLimits(VkPhysicalDevice physicalDevice, VkPhysicalDeviceLimits* pLimits);
- VkResult CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice);
- VkResult DestroyDevice(VkDevice device);
--VkResult GetGlobalExtensionProperties(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
--VkResult GetGlobalLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties);
--VkResult GetPhysicalDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
--VkResult GetPhysicalDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
-+VkResult EnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
-+VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties);
-+VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties);
-+VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties);
- VkResult GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
- VkResult QueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
- VkResult QueueWaitIdle(VkQueue queue);
-@@ -91,8 +90,6 @@ VkResult DestroyImage(VkDevice device, VkImage image);
- VkResult GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
- VkResult CreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView);
- VkResult DestroyImageView(VkDevice device, VkImageView imageView);
--VkResult CreateAttachmentView(VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView);
--VkResult DestroyAttachmentView(VkDevice device, VkAttachmentView attachmentView);
- VkResult CreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule);
- VkResult DestroyShaderModule(VkDevice device, VkShaderModule shaderModule);
- VkResult CreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader);
-@@ -111,20 +108,12 @@ VkResult CreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo,
- VkResult DestroySampler(VkDevice device, VkSampler sampler);
- VkResult CreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout);
- VkResult DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout);
--VkResult CreateDescriptorPool(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool);
-+VkResult CreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool);
- VkResult DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool);
- VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool);
- VkResult AllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount);
- VkResult FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets);
- VkResult UpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies);
--VkResult CreateDynamicViewportState(VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState);
--VkResult DestroyDynamicViewportState(VkDevice device, VkDynamicViewportState dynamicViewportState);
--VkResult CreateDynamicRasterState(VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState);
--VkResult DestroyDynamicRasterState(VkDevice device, VkDynamicRasterState dynamicRasterState);
--VkResult CreateDynamicColorBlendState(VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState);
--VkResult DestroyDynamicColorBlendState(VkDevice device, VkDynamicColorBlendState dynamicColorBlendState);
--VkResult CreateDynamicDepthStencilState(VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState);
--VkResult DestroyDynamicDepthStencilState(VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState);
- VkResult CreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer);
- VkResult DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer);
- VkResult CreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass);
-@@ -139,10 +128,15 @@ VkResult BeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* p
- VkResult EndCommandBuffer(VkCmdBuffer cmdBuffer);
- VkResult ResetCommandBuffer(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags);
- void CmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
--void CmdBindDynamicViewportState(VkCmdBuffer cmdBuffer, VkDynamicViewportState dynamicViewportState);
--void CmdBindDynamicRasterState(VkCmdBuffer cmdBuffer, VkDynamicRasterState dynamicRasterState);
--void CmdBindDynamicColorBlendState(VkCmdBuffer cmdBuffer, VkDynamicColorBlendState dynamicColorBlendState);
--void CmdBindDynamicDepthStencilState(VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState dynamicDepthStencilState);
-+void CmdSetViewport(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports);
-+void CmdSetScissor(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
-+void CmdSetLineWidth(VkCmdBuffer cmdBuffer, float lineWidth);
-+void CmdSetDepthBias(VkCmdBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias);
-+void CmdSetBlendConstants(VkCmdBuffer cmdBuffer, const float blendConst[4]);
-+void CmdSetDepthBounds(VkCmdBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds);
-+void CmdSetStencilCompareMask(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask);
-+void CmdSetStencilWriteMask(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
-+void CmdSetStencilReference(VkCmdBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference);
- void CmdBindDescriptorSets(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
- void CmdBindIndexBuffer(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
- void CmdBindVertexBuffers(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
-@@ -160,9 +154,9 @@ void CmdCopyImageToBuffer(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout
- void CmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData);
- void CmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data);
- void CmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
--void CmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-+void CmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
- void CmdClearColorAttachment(VkCmdBuffer cmdBuffer, uint32_t colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rectCount, const VkRect3D* pRects);
--void CmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rectCount, const VkRect3D* pRects);
-+void CmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags aspectMask, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rectCount, const VkRect3D* pRects);
- void CmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
- void CmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- void CmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-diff --git a/vulkan/nulldrv/null_driver_gen.cpp b/vulkan/nulldrv/null_driver_gen.cpp
-index 56ee49a..879ad32 100644
---- a/vulkan/nulldrv/null_driver_gen.cpp
-+++ b/vulkan/nulldrv/null_driver_gen.cpp
-@@ -46,18 +46,16 @@ const NameProcEntry kInstanceProcTbl[] = {
- // clang-format off
- {"vkCreateDevice", reinterpret_cast<PFN_vkVoidFunction>(CreateDevice)},
- {"vkDestroyInstance", reinterpret_cast<PFN_vkVoidFunction>(DestroyInstance)},
-+ {"vkEnumerateDeviceExtensionProperties", reinterpret_cast<PFN_vkVoidFunction>(EnumerateDeviceExtensionProperties)},
-+ {"vkEnumerateDeviceLayerProperties", reinterpret_cast<PFN_vkVoidFunction>(EnumerateDeviceLayerProperties)},
- {"vkEnumeratePhysicalDevices", reinterpret_cast<PFN_vkVoidFunction>(EnumeratePhysicalDevices)},
- {"vkGetInstanceProcAddr", reinterpret_cast<PFN_vkVoidFunction>(GetInstanceProcAddr)},
-- {"vkGetPhysicalDeviceExtensionProperties", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceExtensionProperties)},
- {"vkGetPhysicalDeviceFeatures", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceFeatures)},
- {"vkGetPhysicalDeviceFormatProperties", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceFormatProperties)},
- {"vkGetPhysicalDeviceImageFormatProperties", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceImageFormatProperties)},
-- {"vkGetPhysicalDeviceLayerProperties", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceLayerProperties)},
-- {"vkGetPhysicalDeviceLimits", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceLimits)},
- {"vkGetPhysicalDeviceMemoryProperties", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceMemoryProperties)},
- {"vkGetPhysicalDeviceProperties", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceProperties)},
-- {"vkGetPhysicalDeviceQueueCount", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceQueueCount)},
-- {"vkGetPhysicalDeviceQueueProperties", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceQueueProperties)},
-+ {"vkGetPhysicalDeviceQueueFamilyProperties", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceQueueFamilyProperties)},
- {"vkGetPhysicalDeviceSparseImageFormatProperties", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceSparseImageFormatProperties)},
- // clang-format on
- };
-@@ -72,10 +70,6 @@ const NameProcEntry kDeviceProcTbl[] = {
- {"vkCmdBeginQuery", reinterpret_cast<PFN_vkVoidFunction>(CmdBeginQuery)},
- {"vkCmdBeginRenderPass", reinterpret_cast<PFN_vkVoidFunction>(CmdBeginRenderPass)},
- {"vkCmdBindDescriptorSets", reinterpret_cast<PFN_vkVoidFunction>(CmdBindDescriptorSets)},
-- {"vkCmdBindDynamicColorBlendState", reinterpret_cast<PFN_vkVoidFunction>(CmdBindDynamicColorBlendState)},
-- {"vkCmdBindDynamicDepthStencilState", reinterpret_cast<PFN_vkVoidFunction>(CmdBindDynamicDepthStencilState)},
-- {"vkCmdBindDynamicRasterState", reinterpret_cast<PFN_vkVoidFunction>(CmdBindDynamicRasterState)},
-- {"vkCmdBindDynamicViewportState", reinterpret_cast<PFN_vkVoidFunction>(CmdBindDynamicViewportState)},
- {"vkCmdBindIndexBuffer", reinterpret_cast<PFN_vkVoidFunction>(CmdBindIndexBuffer)},
- {"vkCmdBindPipeline", reinterpret_cast<PFN_vkVoidFunction>(CmdBindPipeline)},
- {"vkCmdBindVertexBuffers", reinterpret_cast<PFN_vkVoidFunction>(CmdBindVertexBuffers)},
-@@ -105,11 +99,19 @@ const NameProcEntry kDeviceProcTbl[] = {
- {"vkCmdResetEvent", reinterpret_cast<PFN_vkVoidFunction>(CmdResetEvent)},
- {"vkCmdResetQueryPool", reinterpret_cast<PFN_vkVoidFunction>(CmdResetQueryPool)},
- {"vkCmdResolveImage", reinterpret_cast<PFN_vkVoidFunction>(CmdResolveImage)},
-+ {"vkCmdSetBlendConstants", reinterpret_cast<PFN_vkVoidFunction>(CmdSetBlendConstants)},
-+ {"vkCmdSetDepthBias", reinterpret_cast<PFN_vkVoidFunction>(CmdSetDepthBias)},
-+ {"vkCmdSetDepthBounds", reinterpret_cast<PFN_vkVoidFunction>(CmdSetDepthBounds)},
- {"vkCmdSetEvent", reinterpret_cast<PFN_vkVoidFunction>(CmdSetEvent)},
-+ {"vkCmdSetLineWidth", reinterpret_cast<PFN_vkVoidFunction>(CmdSetLineWidth)},
-+ {"vkCmdSetScissor", reinterpret_cast<PFN_vkVoidFunction>(CmdSetScissor)},
-+ {"vkCmdSetStencilCompareMask", reinterpret_cast<PFN_vkVoidFunction>(CmdSetStencilCompareMask)},
-+ {"vkCmdSetStencilReference", reinterpret_cast<PFN_vkVoidFunction>(CmdSetStencilReference)},
-+ {"vkCmdSetStencilWriteMask", reinterpret_cast<PFN_vkVoidFunction>(CmdSetStencilWriteMask)},
-+ {"vkCmdSetViewport", reinterpret_cast<PFN_vkVoidFunction>(CmdSetViewport)},
- {"vkCmdUpdateBuffer", reinterpret_cast<PFN_vkVoidFunction>(CmdUpdateBuffer)},
- {"vkCmdWaitEvents", reinterpret_cast<PFN_vkVoidFunction>(CmdWaitEvents)},
- {"vkCmdWriteTimestamp", reinterpret_cast<PFN_vkVoidFunction>(CmdWriteTimestamp)},
-- {"vkCreateAttachmentView", reinterpret_cast<PFN_vkVoidFunction>(CreateAttachmentView)},
- {"vkCreateBuffer", reinterpret_cast<PFN_vkVoidFunction>(CreateBuffer)},
- {"vkCreateBufferView", reinterpret_cast<PFN_vkVoidFunction>(CreateBufferView)},
- {"vkCreateCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(CreateCommandBuffer)},
-@@ -117,10 +119,6 @@ const NameProcEntry kDeviceProcTbl[] = {
- {"vkCreateComputePipelines", reinterpret_cast<PFN_vkVoidFunction>(CreateComputePipelines)},
- {"vkCreateDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(CreateDescriptorPool)},
- {"vkCreateDescriptorSetLayout", reinterpret_cast<PFN_vkVoidFunction>(CreateDescriptorSetLayout)},
-- {"vkCreateDynamicColorBlendState", reinterpret_cast<PFN_vkVoidFunction>(CreateDynamicColorBlendState)},
-- {"vkCreateDynamicDepthStencilState", reinterpret_cast<PFN_vkVoidFunction>(CreateDynamicDepthStencilState)},
-- {"vkCreateDynamicRasterState", reinterpret_cast<PFN_vkVoidFunction>(CreateDynamicRasterState)},
-- {"vkCreateDynamicViewportState", reinterpret_cast<PFN_vkVoidFunction>(CreateDynamicViewportState)},
- {"vkCreateEvent", reinterpret_cast<PFN_vkVoidFunction>(CreateEvent)},
- {"vkCreateFence", reinterpret_cast<PFN_vkVoidFunction>(CreateFence)},
- {"vkCreateFramebuffer", reinterpret_cast<PFN_vkVoidFunction>(CreateFramebuffer)},
-@@ -135,7 +133,6 @@ const NameProcEntry kDeviceProcTbl[] = {
- {"vkCreateSemaphore", reinterpret_cast<PFN_vkVoidFunction>(CreateSemaphore)},
- {"vkCreateShader", reinterpret_cast<PFN_vkVoidFunction>(CreateShader)},
- {"vkCreateShaderModule", reinterpret_cast<PFN_vkVoidFunction>(CreateShaderModule)},
-- {"vkDestroyAttachmentView", reinterpret_cast<PFN_vkVoidFunction>(DestroyAttachmentView)},
- {"vkDestroyBuffer", reinterpret_cast<PFN_vkVoidFunction>(DestroyBuffer)},
- {"vkDestroyBufferView", reinterpret_cast<PFN_vkVoidFunction>(DestroyBufferView)},
- {"vkDestroyCommandBuffer", reinterpret_cast<PFN_vkVoidFunction>(DestroyCommandBuffer)},
-@@ -143,10 +140,6 @@ const NameProcEntry kDeviceProcTbl[] = {
- {"vkDestroyDescriptorPool", reinterpret_cast<PFN_vkVoidFunction>(DestroyDescriptorPool)},
- {"vkDestroyDescriptorSetLayout", reinterpret_cast<PFN_vkVoidFunction>(DestroyDescriptorSetLayout)},
- {"vkDestroyDevice", reinterpret_cast<PFN_vkVoidFunction>(DestroyDevice)},
-- {"vkDestroyDynamicColorBlendState", reinterpret_cast<PFN_vkVoidFunction>(DestroyDynamicColorBlendState)},
-- {"vkDestroyDynamicDepthStencilState", reinterpret_cast<PFN_vkVoidFunction>(DestroyDynamicDepthStencilState)},
-- {"vkDestroyDynamicRasterState", reinterpret_cast<PFN_vkVoidFunction>(DestroyDynamicRasterState)},
-- {"vkDestroyDynamicViewportState", reinterpret_cast<PFN_vkVoidFunction>(DestroyDynamicViewportState)},
- {"vkDestroyEvent", reinterpret_cast<PFN_vkVoidFunction>(DestroyEvent)},
- {"vkDestroyFence", reinterpret_cast<PFN_vkVoidFunction>(DestroyFence)},
- {"vkDestroyFramebuffer", reinterpret_cast<PFN_vkVoidFunction>(DestroyFramebuffer)},
-diff --git a/vulkan/tools/Android.mk b/vulkan/tools/Android.mk
-index 9ea5f14..31d6089 100644
---- a/vulkan/tools/Android.mk
-+++ b/vulkan/tools/Android.mk
-@@ -17,6 +17,7 @@ include $(CLEAR_VARS)
-
- LOCAL_CLANG := true
- LOCAL_CFLAGS := -std=c99 -fvisibility=hidden -fstrict-aliasing
-+LOCAL_CFLAGS += -DLOG_TAG=\"vkinfo\"
- LOCAL_CFLAGS += -Weverything -Werror -Wno-padded -Wno-undef -Wno-switch-enum
- LOCAL_CPPFLAGS := -std=c++1y \
- -Wno-c++98-compat-pedantic \
-diff --git a/vulkan/tools/vkinfo.cpp b/vulkan/tools/vkinfo.cpp
-index e1eb129..583e607 100644
---- a/vulkan/tools/vkinfo.cpp
-+++ b/vulkan/tools/vkinfo.cpp
-@@ -38,38 +38,14 @@ namespace {
- case VK_EVENT_SET: result_str = "VK_EVENT_SET"; break;
- case VK_EVENT_RESET: result_str = "VK_EVENT_RESET"; break;
- case VK_INCOMPLETE: result_str = "VK_INCOMPLETE"; break;
-- case VK_ERROR_UNKNOWN: result_str = "VK_ERROR_UNKNOWN"; break;
-- case VK_ERROR_UNAVAILABLE: result_str = "VK_ERROR_UNAVAILABLE"; break;
-- case VK_ERROR_INITIALIZATION_FAILED: result_str = "VK_ERROR_INITIALIZATION_FAILED"; break;
- case VK_ERROR_OUT_OF_HOST_MEMORY: result_str = "VK_ERROR_OUT_OF_HOST_MEMORY"; break;
- case VK_ERROR_OUT_OF_DEVICE_MEMORY: result_str = "VK_ERROR_OUT_OF_DEVICE_MEMORY"; break;
-- case VK_ERROR_DEVICE_ALREADY_CREATED: result_str = "VK_ERROR_DEVICE_ALREADY_CREATED"; break;
-+ case VK_ERROR_INITIALIZATION_FAILED: result_str = "VK_ERROR_INITIALIZATION_FAILED"; break;
- case VK_ERROR_DEVICE_LOST: result_str = "VK_ERROR_DEVICE_LOST"; break;
-- case VK_ERROR_INVALID_POINTER: result_str = "VK_ERROR_INVALID_POINTER"; break;
-- case VK_ERROR_INVALID_VALUE: result_str = "VK_ERROR_INVALID_VALUE"; break;
-- case VK_ERROR_INVALID_HANDLE: result_str = "VK_ERROR_INVALID_HANDLE"; break;
-- case VK_ERROR_INVALID_ORDINAL: result_str = "VK_ERROR_INVALID_ORDINAL"; break;
-- case VK_ERROR_INVALID_MEMORY_SIZE: result_str = "VK_ERROR_INVALID_MEMORY_SIZE"; break;
-- case VK_ERROR_INVALID_EXTENSION: result_str = "VK_ERROR_INVALID_EXTENSION"; break;
-- case VK_ERROR_INVALID_FLAGS: result_str = "VK_ERROR_INVALID_FLAGS"; break;
-- case VK_ERROR_INVALID_ALIGNMENT: result_str = "VK_ERROR_INVALID_ALIGNMENT"; break;
-- case VK_ERROR_INVALID_FORMAT: result_str = "VK_ERROR_INVALID_FORMAT"; break;
-- case VK_ERROR_INVALID_IMAGE: result_str = "VK_ERROR_INVALID_IMAGE"; break;
-- case VK_ERROR_INVALID_DESCRIPTOR_SET_DATA: result_str = "VK_ERROR_INVALID_DESCRIPTOR_SET_DATA"; break;
-- case VK_ERROR_INVALID_QUEUE_TYPE: result_str = "VK_ERROR_INVALID_QUEUE_TYPE"; break;
-- case VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION: result_str = "VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION"; break;
-- case VK_ERROR_BAD_SHADER_CODE: result_str = "VK_ERROR_BAD_SHADER_CODE"; break;
-- case VK_ERROR_BAD_PIPELINE_DATA: result_str = "VK_ERROR_BAD_PIPELINE_DATA"; break;
-- case VK_ERROR_NOT_MAPPABLE: result_str = "VK_ERROR_NOT_MAPPABLE"; break;
- case VK_ERROR_MEMORY_MAP_FAILED: result_str = "VK_ERROR_MEMORY_MAP_FAILED"; break;
-- case VK_ERROR_MEMORY_UNMAP_FAILED: result_str = "VK_ERROR_MEMORY_UNMAP_FAILED"; break;
-- case VK_ERROR_INCOMPATIBLE_DEVICE: result_str = "VK_ERROR_INCOMPATIBLE_DEVICE"; break;
-+ case VK_ERROR_LAYER_NOT_PRESENT: result_str = "VK_ERROR_LAYER_NOT_PRESENT"; break;
-+ case VK_ERROR_EXTENSION_NOT_PRESENT: result_str = "VK_ERROR_EXTENSION_NOT_PRESENT"; break;
- case VK_ERROR_INCOMPATIBLE_DRIVER: result_str = "VK_ERROR_INCOMPATIBLE_DRIVER"; break;
-- case VK_ERROR_INCOMPLETE_COMMAND_BUFFER: result_str = "VK_ERROR_INCOMPLETE_COMMAND_BUFFER"; break;
-- case VK_ERROR_BUILDING_COMMAND_BUFFER: result_str = "VK_ERROR_BUILDING_COMMAND_BUFFER"; break;
-- case VK_ERROR_MEMORY_NOT_BOUND: result_str = "VK_ERROR_MEMORY_NOT_BOUND"; break;
-- case VK_ERROR_INCOMPATIBLE_QUEUE: result_str = "VK_ERROR_INCOMPATIBLE_QUEUE"; break;
-- case VK_ERROR_INVALID_LAYER: result_str = "VK_ERROR_INVALID_LAYER"; break;
- default: result_str = "<unknown VkResult>"; break;
- // clang-format on
- }
-@@ -94,6 +70,21 @@ const char* VkPhysicalDeviceTypeStr(VkPhysicalDeviceType type) {
- }
- }
-
-+const char* VkQueueFlagBitStr(VkQueueFlagBits bit) {
-+ switch (bit) {
-+ case VK_QUEUE_GRAPHICS_BIT:
-+ return "GRAPHICS";
-+ case VK_QUEUE_COMPUTE_BIT:
-+ return "COMPUTE";
-+ case VK_QUEUE_DMA_BIT:
-+ return "DMA";
-+ case VK_QUEUE_SPARSE_MEMMGR_BIT:
-+ return "SPARSE";
-+ case VK_QUEUE_EXTENDED_BIT:
-+ return "EXT";
-+ }
-+}
-+
- void DumpPhysicalDevice(uint32_t idx, VkPhysicalDevice pdev) {
- VkResult result;
- std::ostringstream strbuf;
-@@ -113,8 +104,8 @@ void DumpPhysicalDevice(uint32_t idx, VkPhysicalDevice pdev) {
- if (result != VK_SUCCESS)
- die("vkGetPhysicalDeviceMemoryProperties", result);
- for (uint32_t heap = 0; heap < mem_props.memoryHeapCount; heap++) {
-- if ((mem_props.memoryHeaps[heap].flags & VK_MEMORY_HEAP_HOST_LOCAL) !=
-- 0)
-+ if ((mem_props.memoryHeaps[heap].flags &
-+ VK_MEMORY_HEAP_HOST_LOCAL_BIT) != 0)
- strbuf << "HOST_LOCAL";
- printf(" Heap %u: 0x%" PRIx64 " %s\n", heap,
- mem_props.memoryHeaps[heap].size, strbuf.str().c_str());
-@@ -137,10 +128,37 @@ void DumpPhysicalDevice(uint32_t idx, VkPhysicalDevice pdev) {
- strbuf << " WRITE_COMBINED";
- if ((flags & VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT) != 0)
- strbuf << " LAZILY_ALLOCATED";
-- printf(" Type %u: %s\n", type, strbuf.str().c_str());
-+ printf(" Type %u: %s\n", type, strbuf.str().c_str());
- strbuf.str(std::string());
- }
- }
-+
-+ uint32_t num_queue_families;
-+ result = vkGetPhysicalDeviceQueueFamilyProperties(pdev, &num_queue_families,
-+ nullptr);
-+ if (result != VK_SUCCESS)
-+ die("vkGetPhysicalDeviceQueueFamilyProperties (count)", result);
-+ std::vector<VkQueueFamilyProperties> queue_family_properties(
-+ num_queue_families);
-+ result = vkGetPhysicalDeviceQueueFamilyProperties(
-+ pdev, &num_queue_families, queue_family_properties.data());
-+ if (result != VK_SUCCESS)
-+ die("vkGetPhysicalDeviceQueueFamilyProperties (values)", result);
-+ for (uint32_t family = 0; family < num_queue_families; family++) {
-+ const VkQueueFamilyProperties& qprops = queue_family_properties[family];
-+ const char* sep = "";
-+ int bit, queue_flags = static_cast<int>(qprops.queueFlags);
-+ while ((bit = __builtin_ffs(queue_flags)) != 0) {
-+ VkQueueFlagBits flag = VkQueueFlagBits(1 << (bit - 1));
-+ strbuf << sep << VkQueueFlagBitStr(flag);
-+ queue_flags &= ~flag;
-+ sep = "+";
-+ }
-+ printf(" Queue Family %u: %2ux %s timestamps:%s\n", family,
-+ qprops.queueCount, strbuf.str().c_str(),
-+ qprops.supportsTimestamps ? "YES" : "NO");
-+ strbuf.str(std::string());
-+ }
- }
-
- } // namespace
-@@ -184,9 +202,7 @@ int main(int /*argc*/, char const* /*argv*/ []) {
- for (uint32_t i = 0; i < physical_devices.size(); i++)
- DumpPhysicalDevice(i, physical_devices[i]);
-
-- result = vkDestroyInstance(instance);
-- if (result != VK_SUCCESS)
-- die("vkDestroyInstance", result);
-+ vkDestroyInstance(instance);
-
- return 0;
- }
---
-2.6.0.rc2.230.g3dd15c0
-