vulkan: Update from version 0.180.0 to 0.181.0

Change-Id: I4a7e216d9966f2dcf873bcb952472463dfb59f95
(cherry picked from commit 2c3539bab4b81b6e55d690c5e113d3421cc15021)
diff --git a/vulkan/api/vulkan.api b/vulkan/api/vulkan.api
index 669a64e..fbd1d9d 100644
--- a/vulkan/api/vulkan.api
+++ b/vulkan/api/vulkan.api
@@ -27,7 +27,7 @@
 
 // API version (major.minor.patch)
 define VERSION_MAJOR 0
-define VERSION_MINOR 180
+define VERSION_MINOR 181
 define VERSION_PATCH 0
 
 // API limits
@@ -135,13 +135,6 @@
     VK_IMAGE_VIEW_TYPE_CUBE_ARRAY                           = 0x00000006,
 }
 
-enum VkImageAspect {
-    VK_IMAGE_ASPECT_COLOR                                   = 0x00000000,
-    VK_IMAGE_ASPECT_DEPTH                                   = 0x00000001,
-    VK_IMAGE_ASPECT_STENCIL                                 = 0x00000002,
-    VK_IMAGE_ASPECT_METADATA                                = 0x00000003,
-}
-
 enum VkCmdBufferLevel {
     VK_CMD_BUFFER_LEVEL_PRIMARY                             = 0x00000000,
     VK_CMD_BUFFER_LEVEL_SECONDARY                           = 0x00000001,
@@ -535,16 +528,6 @@
     VK_FORMAT_B10G10R10A2_SINT                              = 0x000000AD,
 }
 
-/// Shader stage enumerant
-enum VkShaderStage {
-    VK_SHADER_STAGE_VERTEX                                  = 0x00000000,
-    VK_SHADER_STAGE_TESSELLATION_CONTROL                    = 0x00000001,
-    VK_SHADER_STAGE_TESSELLATION_EVALUATION                 = 0x00000002,
-    VK_SHADER_STAGE_GEOMETRY                                = 0x00000003,
-    VK_SHADER_STAGE_FRAGMENT                                = 0x00000004,
-    VK_SHADER_STAGE_COMPUTE                                 = 0x00000005,
-}
-
 /// Structure type enumerant
 enum VkStructureType {
     VK_STRUCTURE_TYPE_APPLICATION_INFO                          = 0,
@@ -606,12 +589,11 @@
 enum VkResult {
     // Return codes for successful operation execution (positive values)
     VK_SUCCESS                                              = 0x00000000,
-    VK_UNSUPPORTED                                          = 0x00000001,
-    VK_NOT_READY                                            = 0x00000002,
-    VK_TIMEOUT                                              = 0x00000003,
-    VK_EVENT_SET                                            = 0x00000004,
-    VK_EVENT_RESET                                          = 0x00000005,
-    VK_INCOMPLETE                                           = 0x00000006,
+    VK_NOT_READY                                            = 0x00000001,
+    VK_TIMEOUT                                              = 0x00000002,
+    VK_EVENT_SET                                            = 0x00000003,
+    VK_EVENT_RESET                                          = 0x00000004,
+    VK_INCOMPLETE                                           = 0x00000005,
 
     // Error codes (negative values)
     VK_ERROR_OUT_OF_HOST_MEMORY                             = 0xFFFFFFFF,
@@ -856,13 +838,11 @@
 bitfield VkCmdBufferCreateFlags {
 }
 
-/// Command buffer optimization flags
-bitfield VkCmdBufferOptimizeFlags {
-    VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT                  = 0x00000001,
-    VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT              = 0x00000002,
-    VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT              = 0x00000004,
-    VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT        = 0x00000008,
-    VK_CMD_BUFFER_OPTIMIZE_NO_SIMULTANEOUS_USE_BIT          = 0x00000010,  /// Only one call to the secondary command buffer will exist at any given time
+/// Command buffer usage flags
+bitfield VkCmdBufferUsageFlags {
+    VK_CMD_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT                 = 0x00000001,
+    VK_CMD_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT            = 0x00000002,
+    VK_CMD_BUFFER_USAGE_SIMULTANEOUS_USE_BIT                = 0x00000004,
 }
 
 /// Pipeline statistics flags
@@ -1022,9 +1002,10 @@
     VkExtent2D                                  extent
 }
 
-class VkRect3D {
-    VkOffset3D                                  offset
-    VkExtent3D                                  extent
+class VkClearRect {
+    VkRect2D                                    rect
+    u32                                         baseArrayLayer
+    u32                                         numLayers
 }
 
 class VkChannelMapping {
@@ -1140,7 +1121,7 @@
 }
 
 class VkSparseImageFormatProperties {
-    VkImageAspect                               aspect
+    VkImageAspectFlags                          aspect
     VkExtent3D                                  imageGranularity
     VkSparseImageFormatFlags                    flags
 }
@@ -1180,23 +1161,28 @@
 class VkImageFormatProperties {
     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
+    u32                                         maxArrayLayers             /// max array layers for this resource type
     VkSampleCountFlags                          sampleCounts               /// supported sample counts for this resource type
     VkDeviceSize                                maxResourceSize            /// max size (in bytes) of this resource type
 }
 
+class VkDescriptorImageInfo {
+    VkSampler                                   sampler
+    VkImageView                                 imageView
+    VkImageLayout                               imageLayout
+}
+
 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.
 }
 
+@union
 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, 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)
+    VkDescriptorImageInfo                       imageInfo
     VkDescriptorBufferInfo                      bufferInfo                 /// Raw buffer, size and offset for UNIFORM_BUFFER[_DYNAMIC] or STORAGE_BUFFER[_DYNAMIC] descriptor types. Ignored otherwise.
+    VkBufferView                                texelBufferView
 }
 
 class VkWriteDescriptorSet {
@@ -1243,7 +1229,7 @@
 }
 
 class VkImageSubresource {
-    VkImageAspect                               aspect
+    VkImageAspectFlags                          aspect
     u32                                         mipLevel
     u32                                         arrayLayer
 }
@@ -1251,9 +1237,9 @@
 class VkImageSubresourceRange {
     VkImageAspectFlags                          aspectMask
     u32                                         baseMipLevel
-    u32                                         mipLevels
+    u32                                         numLevels
     u32                                         baseArrayLayer
-    u32                                         arraySize
+    u32                                         numLayers
 }
 
 class VkMemoryBarrier {
@@ -1295,7 +1281,7 @@
     VkFormat                                    format
     VkExtent3D                                  extent
     u32                                         mipLevels
-    u32                                         arraySize
+    u32                                         arrayLayers
     u32                                         samples
     VkImageTiling                               tiling
     VkImageUsageFlags                           usage                      /// Image usage flags
@@ -1348,10 +1334,10 @@
 }
 
 class VkImageSubresourceCopy {
-    VkImageAspect                               aspect
+    VkImageAspectFlags                          aspect
     u32                                         mipLevel
-    u32                                         arrayLayer
-    u32                                         arraySize
+    u32                                         baseArrayLayer
+    u32                                         numLayers
 }
 
 class VkImageCopy {
@@ -1402,7 +1388,7 @@
     VkShaderModule                              module             /// Module containing entry point
     const char*                                 pName              /// Null-terminated entry point name
     VkShaderCreateFlags                         flags              /// Reserved
-    VkShaderStage                               stage
+    VkShaderStageFlags                          stage
 }
 
 class VkDescriptorSetLayoutBinding {
@@ -1449,7 +1435,7 @@
 class VkPipelineShaderStageCreateInfo {
     VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
     const void*                                 pNext              /// Pointer to next structure
-    VkShaderStage                               stage
+    VkShaderStageFlags                          stage
     VkShader                                    shader
     const VkSpecializationInfo*                 pSpecializationInfo
 }
@@ -1668,7 +1654,7 @@
 class VkCmdBufferBeginInfo {
     VkStructureType                             sType       /// Must be VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO
     const void*                                 pNext       /// Pointer to next structure
-    VkCmdBufferOptimizeFlags                    flags       /// Command buffer optimization flags
+    VkCmdBufferUsageFlags                       flags       /// Command buffer usage flags
     VkRenderPass                                renderPass  /// Render pass for secondary command buffers
     u32                                         subpass
     VkFramebuffer                               framebuffer /// Framebuffer for secondary command buffers
@@ -4056,7 +4042,7 @@
         u32                                         attachmentCount,
         const VkClearAttachment*                    pAttachments,
         u32                                         rectCount,
-        const VkRect3D*                             pRects) {
+        const VkClearRect*                          pRects) {
     cmdBufferObject := GetCmdBuffer(cmdBuffer)
 
     rects := pRects[0:rectCount]