vulkan.api revision 0e74f00af03b7e705774d0dcf69c2ba8ce7a15a8
1d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Copyright (c) 2015 The Khronos Group Inc. 2d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// 3d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Permission is hereby granted, free of charge, to any person obtaining a 4d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// copy of this software and/or associated documentation files (the 5d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// "Materials"), to deal in the Materials without restriction, including 6d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// without limitation the rights to use, copy, modify, merge, publish, 7d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// distribute, sublicense, and/or sell copies of the Materials, and to 8d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// permit persons to whom the Materials are furnished to do so, subject to 9d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// the following conditions: 10d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// 11d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// The above copyright notice and this permission notice shall be included 12d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// in all copies or substantial portions of the Materials. 13d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// 14d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 18d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 19d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 20d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 21d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 22d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallimport platform "platform.api" 23d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 24d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/////////////// 25d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Constants // 26d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/////////////// 27d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 28d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// API version (major.minor.patch) 29d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Halldefine VERSION_MAJOR 0 300e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Halldefine VERSION_MINOR 205 31ae38f7355fd03b777313e13586585a74e0dee05bJesse Halldefine VERSION_PATCH 0 32d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 33d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// API limits 3465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Halldefine VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256 3565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Halldefine VK_UUID_SIZE 16 3665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Halldefine VK_MAX_EXTENSION_NAME_SIZE 256 3765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Halldefine VK_MAX_DESCRIPTION_SIZE 256 3865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Halldefine VK_MAX_MEMORY_TYPES 32 3965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Halldefine VK_MAX_MEMORY_HEAPS 16 /// The maximum number of unique memory heaps, each of which supporting 1 or more memory types. 40d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// API keywords 42d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Halldefine VK_TRUE 1 43d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Halldefine VK_FALSE 0 445ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 455ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall// API keyword, but needs special handling by some templates 465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Halldefine NULL_HANDLE 0 47d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 480e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_surface") define VK_KHR_SURFACE_REVISION 23 493e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NUMBER 1 503e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" 511356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 520e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_REVISION 66 533e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NUMBER 2 543e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain" 551356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 560e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_display") define VK_KHR_DISPLAY_REVISION 19 573e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NUMBER 3 583e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display" 591356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 600e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_REVISION 8 610e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4 620e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain" 631356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 640e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_REVISION 5 653e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NUMBER 5 663e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NAME "VK_KHR_xlib_surface" 671356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 680e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_REVISION 5 693e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NUMBER 6 703e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NAME "VK_KHR_xcb_surface" 711356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 720e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_REVISION 4 733e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NUMBER 7 743e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NAME "VK_KHR_wayland_surface" 751356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 760e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_REVISION 4 773e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NUMBER 8 783e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NAME "VK_KHR_mir_surface" 791356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 800e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_REVISION 3 813e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NUMBER 8 823e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NAME "VK_KHR_android_surface" 831356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 840e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_REVISION 4 853e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NUMBER 9 863e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NAME "VK_KHR_win32_surface" 871356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 88d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 89d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////// 90d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Types // 91d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////// 92d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 935ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Halltype u32 VkBool32 945ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Halltype u32 VkFlags 955ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Halltype u64 VkDeviceSize 965ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Halltype u32 VkSampleMask 975ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 98d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Dispatchable handle types. 99d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@dispatchHandle type u64 VkInstance 100d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@dispatchHandle type u64 VkPhysicalDevice 101d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@dispatchHandle type u64 VkDevice 102d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@dispatchHandle type u64 VkQueue 1033fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@dispatchHandle type u64 VkCommandBuffer 104d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 105d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Non dispatchable handle types. 106d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkDeviceMemory 1073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@nonDispatchHandle type u64 VkCommandPool 108d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkBuffer 109d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkBufferView 110d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkImage 111d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkImageView 112d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkShaderModule 113d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkPipeline 114d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkPipelineLayout 115d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkSampler 116d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkDescriptorSet 117d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkDescriptorSetLayout 118d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkDescriptorPool 119d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkFence 120d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkSemaphore 121d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkEvent 122d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkQueryPool 123d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkFramebuffer 124d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkRenderPass 125d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkPipelineCache 1261356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 1273e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") @nonDispatchHandle type u64 VkSurfaceKHR 1281356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 1293e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") @nonDispatchHandle type u64 VkSwapchainKHR 1301356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 1313e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayKHR 1323e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayModeKHR 133d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 134d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 135d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////// 136d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Enums // 137d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////// 138d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 139d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkImageLayout { 140d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_LAYOUT_UNDEFINED = 0x00000000, /// Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation) 141d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_LAYOUT_GENERAL = 0x00000001, /// General layout when image can be used for any kind of access 142d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 0x00000002, /// Optimal layout when image is only used for color attachment read/write 143d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 0x00000003, /// Optimal layout when image is only used for depth/stencil attachment read/write 144d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 0x00000004, /// Optimal layout when image is used for read only depth/stencil attachment and shader access 145d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 0x00000005, /// Optimal layout when image is used for read only shader access 1463fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 0x00000006, /// Optimal layout when image is used only as source of transfer operations 1473fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 0x00000007, /// Optimal layout when image is used only as destination of transfer operations 1485ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU 1491356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 1503e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_swapchain") 1513fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 0xc0000802, 152d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 153d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 154d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkAttachmentLoadOp { 155d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_ATTACHMENT_LOAD_OP_LOAD = 0x00000000, 156d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_ATTACHMENT_LOAD_OP_CLEAR = 0x00000001, 157d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002, 158d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 159d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 160d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkAttachmentStoreOp { 161d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_ATTACHMENT_STORE_OP_STORE = 0x00000000, 162d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_ATTACHMENT_STORE_OP_DONT_CARE = 0x00000001, 163d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 164d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 165d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkImageType { 166d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_TYPE_1D = 0x00000000, 167d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_TYPE_2D = 0x00000001, 168d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_TYPE_3D = 0x00000002, 169d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 170d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 171d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkImageTiling { 172c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_IMAGE_TILING_OPTIMAL = 0x00000000, 173c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_IMAGE_TILING_LINEAR = 0x00000001, 174d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 175d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 176d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkImageViewType { 177d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_1D = 0x00000000, 178d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_2D = 0x00000001, 179d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_3D = 0x00000002, 180d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_CUBE = 0x00000003, 181d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_1D_ARRAY = 0x00000004, 182d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_2D_ARRAY = 0x00000005, 183d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 0x00000006, 184d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 185d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1863fbc856120217247c72fb5ed88500000f3881c45Jesse Hallenum VkCommandBufferLevel { 1873fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0x00000000, 1883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_BUFFER_LEVEL_SECONDARY = 0x00000001, 189d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 190d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 19165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallenum VkComponentSwizzle { 19265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_IDENTITY = 0x00000000, 19365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_ZERO = 0x00000001, 19465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_ONE = 0x00000002, 19565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_R = 0x00000003, 19665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_G = 0x00000004, 19765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_B = 0x00000005, 19865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_A = 0x00000006, 199d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 200d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 201d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkDescriptorType { 202d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_SAMPLER = 0x00000000, 203d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 0x00000001, 204d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 0x00000002, 205d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 0x00000003, 206d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 0x00000004, 207d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 0x00000005, 208d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 0x00000006, 209d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 0x00000007, 210d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 0x00000008, 211d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 0x00000009, 212d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 0x0000000a, 213d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 214d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 215d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkQueryType { 216d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_TYPE_OCCLUSION = 0x00000000, 217d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_TYPE_PIPELINE_STATISTICS = 0x00000001, /// Optional 218a3a7a1d37bdfad56245b75edac49f8aceded321dJesse Hall VK_QUERY_TYPE_TIMESTAMP = 0x00000002, 219d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 220d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 221d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkBorderColor { 222d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0x00000000, 223d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 0x00000001, 224d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 0x00000002, 225d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BORDER_COLOR_INT_OPAQUE_BLACK = 0x00000003, 226d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 0x00000004, 227d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BORDER_COLOR_INT_OPAQUE_WHITE = 0x00000005, 228d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 229d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 230d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkPipelineBindPoint { 231c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000000, 232c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_PIPELINE_BIND_POINT_COMPUTE = 0x00000001, 233d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 234d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 235d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkPrimitiveTopology { 236d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0x00000000, 237d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 0x00000001, 238d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 0x00000002, 239d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 0x00000003, 240d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 0x00000004, 241d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 0x00000005, 2423fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 0x00000006, 2433fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 0x00000007, 2443fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 0x00000008, 2453fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 0x00000009, 246091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 0x0000000a, 247d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 248d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 249d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkSharingMode { 250d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHARING_MODE_EXCLUSIVE = 0x00000000, 251d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHARING_MODE_CONCURRENT = 0x00000001, 252d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 253d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 254d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkIndexType { 255d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_INDEX_TYPE_UINT16 = 0x00000000, 256d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_INDEX_TYPE_UINT32 = 0x00000001, 257d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 258d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 25923ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hallenum VkFilter { 26023ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VK_FILTER_NEAREST = 0x00000000, 26123ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VK_FILTER_LINEAR = 0x00000001, 262d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 263d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 26423ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hallenum VkSamplerMipmapMode { 26523ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VK_SAMPLER_MIPMAP_MODE_BASE = 0x00000000, /// Always choose base level 26623ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VK_SAMPLER_MIPMAP_MODE_NEAREST = 0x00000001, /// Choose nearest mip level 26723ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VK_SAMPLER_MIPMAP_MODE_LINEAR = 0x00000002, /// Linear filter between mip levels 268d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 269d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 27023ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hallenum VkSamplerAddressMode { 271c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_SAMPLER_ADDRESS_MODE_REPEAT = 0x00000000, 272c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 0x00000001, 273c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 0x00000002, 274c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 0x00000003, 275c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 0x00000004, 276d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 277d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 278d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkCompareOp { 279d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_COMPARE_OP_NEVER = 0x00000000, 280d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_COMPARE_OP_LESS = 0x00000001, 281d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_COMPARE_OP_EQUAL = 0x00000002, 2823fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMPARE_OP_LESS_OR_EQUAL = 0x00000003, 283d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_COMPARE_OP_GREATER = 0x00000004, 284d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_COMPARE_OP_NOT_EQUAL = 0x00000005, 2853fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMPARE_OP_GREATER_OR_EQUAL = 0x00000006, 286d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_COMPARE_OP_ALWAYS = 0x00000007, 287d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 288d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 28965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallenum VkPolygonMode { 29065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_POLYGON_MODE_FILL = 0x00000000, 29165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_POLYGON_MODE_LINE = 0x00000001, 29265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_POLYGON_MODE_POINT = 0x00000002, 293d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 294d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 295d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkFrontFace { 2963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_FRONT_FACE_COUNTER_CLOCKWISE = 0x00000000, 2973fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_FRONT_FACE_CLOCKWISE = 0x00000001, 298d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 299d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 30065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallenum VkBlendFactor { 30165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ZERO = 0x00000000, 30265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE = 0x00000001, 30365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_SRC_COLOR = 0x00000002, 30465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 0x00000003, 30565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_DST_COLOR = 0x00000004, 30665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 0x00000005, 30765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_SRC_ALPHA = 0x00000006, 30865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 0x00000007, 30965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_DST_ALPHA = 0x00000008, 31065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 0x00000009, 31165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_CONSTANT_COLOR = 0x0000000a, 31265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 0x0000000b, 31365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_CONSTANT_ALPHA = 0x0000000c, 31465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 0x0000000d, 31565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 0x0000000e, 31665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_SRC1_COLOR = 0x0000000f, 31765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 0x00000010, 31865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_SRC1_ALPHA = 0x00000011, 31965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 0x00000012, 320d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 321d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 322d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkBlendOp { 323d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BLEND_OP_ADD = 0x00000000, 324d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BLEND_OP_SUBTRACT = 0x00000001, 325d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BLEND_OP_REVERSE_SUBTRACT = 0x00000002, 326d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BLEND_OP_MIN = 0x00000003, 327d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BLEND_OP_MAX = 0x00000004, 328d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 329d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 330d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkStencilOp { 331d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_STENCIL_OP_KEEP = 0x00000000, 332d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_STENCIL_OP_ZERO = 0x00000001, 333d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_STENCIL_OP_REPLACE = 0x00000002, 3343fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_STENCIL_OP_INCREMENT_AND_CLAMP = 0x00000003, 3353fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_STENCIL_OP_DECREMENT_AND_CLAMP = 0x00000004, 336d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_STENCIL_OP_INVERT = 0x00000005, 3373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_STENCIL_OP_INCREMENT_AND_WRAP = 0x00000006, 3383fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_STENCIL_OP_DECREMENT_AND_WRAP = 0x00000007, 339d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 340d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 341d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkLogicOp { 342d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_CLEAR = 0x00000000, 343d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_AND = 0x00000001, 344d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_AND_REVERSE = 0x00000002, 345d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_COPY = 0x00000003, 346d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_AND_INVERTED = 0x00000004, 3473fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_LOGIC_OP_NO_OP = 0x00000005, 348d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_XOR = 0x00000006, 349d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_OR = 0x00000007, 350d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_NOR = 0x00000008, 3513fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_LOGIC_OP_EQUIVALENT = 0x00000009, 352d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_INVERT = 0x0000000a, 353d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_OR_REVERSE = 0x0000000b, 354d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_COPY_INVERTED = 0x0000000c, 355d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_OR_INVERTED = 0x0000000d, 356d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_NAND = 0x0000000e, 357d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_SET = 0x0000000f, 358d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 359d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3603fbc856120217247c72fb5ed88500000f3881c45Jesse Hallenum VkSystemAllocationScope { 3613e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0x00000000, 3623fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 0x00000001, 3633fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 0x00000002, 3643fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 0x00000003, 3653fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 0x00000004, 36603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall} 36703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall 3683fbc856120217247c72fb5ed88500000f3881c45Jesse Hallenum VkInternalAllocationType { 3693fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0x00000000, 370d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 371d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 372d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkPhysicalDeviceType { 373d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PHYSICAL_DEVICE_TYPE_OTHER = 0x00000000, 374d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 0x00000001, 375d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 0x00000002, 376d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 0x00000003, 377d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PHYSICAL_DEVICE_TYPE_CPU = 0x00000004, 378d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 379d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 38065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallenum VkVertexInputRate { 38165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_VERTEX_INPUT_RATE_VERTEX = 0x00000000, 38265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_VERTEX_INPUT_RATE_INSTANCE = 0x00000001, 383d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 384d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 385d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Vulkan format definitions 386d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkFormat { 387d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_UNDEFINED = 0x00000000, 388d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R4G4_UNORM = 0x00000001, 389d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R4G4_USCALED = 0x00000002, 390d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R4G4B4A4_UNORM = 0x00000003, 391d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R4G4B4A4_USCALED = 0x00000004, 392d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R5G6B5_UNORM = 0x00000005, 393d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R5G6B5_USCALED = 0x00000006, 394d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R5G5B5A1_UNORM = 0x00000007, 395d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R5G5B5A1_USCALED = 0x00000008, 396d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8_UNORM = 0x00000009, 397d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8_SNORM = 0x0000000A, 398d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8_USCALED = 0x0000000B, 399d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8_SSCALED = 0x0000000C, 400d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8_UINT = 0x0000000D, 401d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8_SINT = 0x0000000E, 402d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8_SRGB = 0x0000000F, 403d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8_UNORM = 0x00000010, 404d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8_SNORM = 0x00000011, 405d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8_USCALED = 0x00000012, 406d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8_SSCALED = 0x00000013, 407d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8_UINT = 0x00000014, 408d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8_SINT = 0x00000015, 409d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8_SRGB = 0x00000016, 410d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8_UNORM = 0x00000017, 411d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8_SNORM = 0x00000018, 412d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8_USCALED = 0x00000019, 413d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8_SSCALED = 0x0000001A, 414d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8_UINT = 0x0000001B, 415d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8_SINT = 0x0000001C, 416d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8_SRGB = 0x0000001D, 417d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8A8_UNORM = 0x0000001E, 418d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8A8_SNORM = 0x0000001F, 419d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8A8_USCALED = 0x00000020, 420d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8A8_SSCALED = 0x00000021, 421d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8A8_UINT = 0x00000022, 422d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8A8_SINT = 0x00000023, 423d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R8G8B8A8_SRGB = 0x00000024, 424d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R10G10B10A2_UNORM = 0x00000025, 425d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R10G10B10A2_SNORM = 0x00000026, 426d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R10G10B10A2_USCALED = 0x00000027, 427d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R10G10B10A2_SSCALED = 0x00000028, 428d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R10G10B10A2_UINT = 0x00000029, 429d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R10G10B10A2_SINT = 0x0000002A, 430d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16_UNORM = 0x0000002B, 431d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16_SNORM = 0x0000002C, 432d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16_USCALED = 0x0000002D, 433d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16_SSCALED = 0x0000002E, 434d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16_UINT = 0x0000002F, 435d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16_SINT = 0x00000030, 436d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16_SFLOAT = 0x00000031, 437d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16_UNORM = 0x00000032, 438d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16_SNORM = 0x00000033, 439d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16_USCALED = 0x00000034, 440d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16_SSCALED = 0x00000035, 441d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16_UINT = 0x00000036, 442d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16_SINT = 0x00000037, 443d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16_SFLOAT = 0x00000038, 444d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16_UNORM = 0x00000039, 445d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16_SNORM = 0x0000003A, 446d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16_USCALED = 0x0000003B, 447d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16_SSCALED = 0x0000003C, 448d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16_UINT = 0x0000003D, 449d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16_SINT = 0x0000003E, 450d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16_SFLOAT = 0x0000003F, 451d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16A16_UNORM = 0x00000040, 452d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16A16_SNORM = 0x00000041, 453d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16A16_USCALED = 0x00000042, 454d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16A16_SSCALED = 0x00000043, 455d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16A16_UINT = 0x00000044, 456d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16A16_SINT = 0x00000045, 457d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R16G16B16A16_SFLOAT = 0x00000046, 458d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R32_UINT = 0x00000047, 459d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R32_SINT = 0x00000048, 460d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R32_SFLOAT = 0x00000049, 461d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R32G32_UINT = 0x0000004A, 462d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R32G32_SINT = 0x0000004B, 463d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R32G32_SFLOAT = 0x0000004C, 464d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R32G32B32_UINT = 0x0000004D, 465d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R32G32B32_SINT = 0x0000004E, 466d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R32G32B32_SFLOAT = 0x0000004F, 467d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R32G32B32A32_UINT = 0x00000050, 468d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R32G32B32A32_SINT = 0x00000051, 469d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R32G32B32A32_SFLOAT = 0x00000052, 470d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R64_SFLOAT = 0x00000053, 471d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R64G64_SFLOAT = 0x00000054, 472d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R64G64B64_SFLOAT = 0x00000055, 473d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R64G64B64A64_SFLOAT = 0x00000056, 474d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R11G11B10_UFLOAT = 0x00000057, 475d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_R9G9B9E5_UFLOAT = 0x00000058, 476d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_D16_UNORM = 0x00000059, 4775ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_FORMAT_D24_UNORM_X8 = 0x0000005A, 478d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_D32_SFLOAT = 0x0000005B, 479d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_S8_UINT = 0x0000005C, 480d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_D16_UNORM_S8_UINT = 0x0000005D, 481d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_D24_UNORM_S8_UINT = 0x0000005E, 482d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_D32_SFLOAT_S8_UINT = 0x0000005F, 483d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC1_RGB_UNORM = 0x00000060, 484d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC1_RGB_SRGB = 0x00000061, 485d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC1_RGBA_UNORM = 0x00000062, 486d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC1_RGBA_SRGB = 0x00000063, 487d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC2_UNORM = 0x00000064, 488d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC2_SRGB = 0x00000065, 489d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC3_UNORM = 0x00000066, 490d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC3_SRGB = 0x00000067, 491d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC4_UNORM = 0x00000068, 492d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC4_SNORM = 0x00000069, 493d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC5_UNORM = 0x0000006A, 494d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC5_SNORM = 0x0000006B, 495d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC6H_UFLOAT = 0x0000006C, 496d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC6H_SFLOAT = 0x0000006D, 497d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC7_UNORM = 0x0000006E, 498d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_BC7_SRGB = 0x0000006F, 499d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ETC2_R8G8B8_UNORM = 0x00000070, 500d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ETC2_R8G8B8_SRGB = 0x00000071, 501d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ETC2_R8G8B8A1_UNORM = 0x00000072, 502d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ETC2_R8G8B8A1_SRGB = 0x00000073, 503d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ETC2_R8G8B8A8_UNORM = 0x00000074, 504d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ETC2_R8G8B8A8_SRGB = 0x00000075, 505d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_EAC_R11_UNORM = 0x00000076, 506d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_EAC_R11_SNORM = 0x00000077, 507d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_EAC_R11G11_UNORM = 0x00000078, 508d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_EAC_R11G11_SNORM = 0x00000079, 509d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_4x4_UNORM = 0x0000007A, 510d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_4x4_SRGB = 0x0000007B, 511d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_5x4_UNORM = 0x0000007C, 512d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_5x4_SRGB = 0x0000007D, 513d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_5x5_UNORM = 0x0000007E, 514d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_5x5_SRGB = 0x0000007F, 515d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_6x5_UNORM = 0x00000080, 516d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_6x5_SRGB = 0x00000081, 517d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_6x6_UNORM = 0x00000082, 518d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_6x6_SRGB = 0x00000083, 519d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_8x5_UNORM = 0x00000084, 520d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_8x5_SRGB = 0x00000085, 521d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_8x6_UNORM = 0x00000086, 522d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_8x6_SRGB = 0x00000087, 523d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_8x8_UNORM = 0x00000088, 524d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_8x8_SRGB = 0x00000089, 525d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_10x5_UNORM = 0x0000008A, 526d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_10x5_SRGB = 0x0000008B, 527d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_10x6_UNORM = 0x0000008C, 528d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_10x6_SRGB = 0x0000008D, 529d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_10x8_UNORM = 0x0000008E, 530d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_10x8_SRGB = 0x0000008F, 531d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_10x10_UNORM = 0x00000090, 532d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_10x10_SRGB = 0x00000091, 533d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_12x10_UNORM = 0x00000092, 534d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_12x10_SRGB = 0x00000093, 535d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_12x12_UNORM = 0x00000094, 536d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_ASTC_12x12_SRGB = 0x00000095, 537d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B4G4R4A4_UNORM = 0x00000096, 538d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B5G5R5A1_UNORM = 0x00000097, 539d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B5G6R5_UNORM = 0x00000098, 540d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B5G6R5_USCALED = 0x00000099, 541d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8_UNORM = 0x0000009A, 542d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8_SNORM = 0x0000009B, 543d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8_USCALED = 0x0000009C, 544d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8_SSCALED = 0x0000009D, 545d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8_UINT = 0x0000009E, 546d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8_SINT = 0x0000009F, 547d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8_SRGB = 0x000000A0, 548d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8A8_UNORM = 0x000000A1, 549d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8A8_SNORM = 0x000000A2, 550d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8A8_USCALED = 0x000000A3, 551d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8A8_SSCALED = 0x000000A4, 552d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8A8_UINT = 0x000000A5, 553d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8A8_SINT = 0x000000A6, 554d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B8G8R8A8_SRGB = 0x000000A7, 555d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B10G10R10A2_UNORM = 0x000000A8, 556d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B10G10R10A2_SNORM = 0x000000A9, 557d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B10G10R10A2_USCALED = 0x000000AA, 558d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B10G10R10A2_SSCALED = 0x000000AB, 559d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B10G10R10A2_UINT = 0x000000AC, 560d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_B10G10R10A2_SINT = 0x000000AD, 561d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 562d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 563d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Structure type enumerant 564d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkStructureType { 565d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_STRUCTURE_TYPE_APPLICATION_INFO = 0, 566c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1, 567c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2, 568c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3, 569c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_SUBMIT_INFO = 4, 570c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO = 5, 571c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6, 572c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7, 573c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8, 574c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9, 5755ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10, 576c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11, 577c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12, 578c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13, 579c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14, 580c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15, 581c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16, 5823e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17, 5833e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18, 5843e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19, 5853e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20, 5863e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21, 5873e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22, 5883e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23, 5893e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24, 5903e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25, 5913e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26, 5923e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27, 5933e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28, 5943e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29, 5953e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30, 5963e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31, 5973e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32, 5983e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33, 5993e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO = 34, 6003e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35, 6013e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36, 6023e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37, 6033e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38, 6043e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39, 6053e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO = 40, 6063e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 41, 6073e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 42, 6083e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 43, 6093e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 44, 6103e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_MEMORY_BARRIER = 45, 6113e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO = 46, 6123e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 47, 6133e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall 6143e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_swapchain") 6151356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 0xc0000801, 6161356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 6173e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_display") 6181356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 0xc0000c00, 619a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 0xc0000c01, 6201356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 6213e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_display_swapchain") 6221356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR = 0xc0001000, 6231356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = 0xc0001001, 624d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 625d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 62665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallenum VkSubpassContents { 62765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_SUBPASS_CONTENTS_INLINE = 0x00000000, 62865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 0x00000001, 629d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 630d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 631091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall@lastUnused(-10) 632d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Error and return codes 633d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkResult { 634d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Return codes for successful operation execution (positive values) 635d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SUCCESS = 0x00000000, 636a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VK_NOT_READY = 0x00000001, 637a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VK_TIMEOUT = 0x00000002, 638a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VK_EVENT_SET = 0x00000003, 639a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VK_EVENT_RESET = 0x00000004, 640a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VK_INCOMPLETE = 0x00000005, 641d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 6423e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_swapchain") 6431356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VK_SUBOPTIMAL_KHR = 0x40000403, 6441356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 645d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Error codes (negative values) 6465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFF, 6475ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFE, 648d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_ERROR_INITIALIZATION_FAILED = 0xFFFFFFFD, 6495ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_ERROR_DEVICE_LOST = 0xFFFFFFFC, 6505ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFFB, 6515ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_ERROR_LAYER_NOT_PRESENT = 0xFFFFFFFA, 6525ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_ERROR_EXTENSION_NOT_PRESENT = 0xFFFFFFF9, 653606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hall VK_ERROR_FEATURE_NOT_PRESENT = 0xFFFFFFF8, 654606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hall VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFF7, 655091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VK_ERROR_TOO_MANY_OBJECTS = 0xFFFFFFF6, 656a9e5703e380d9d7f096d177adb792621a1e8d4baJesse Hall VK_ERROR_FORMAT_NOT_SUPPORTED = 0xFFFFFFF5, 6571356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 6583e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_surface") 659a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VK_ERROR_SURFACE_LOST_KHR = 0xC0000400, 660a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 6613e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_swapchain") 6621356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VK_ERROR_OUT_OF_DATE_KHR = 0xC0000804, 6631356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 6643e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_display_swapchain") 6651356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC0001002, 6661356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 6673e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_android_surface") 6681356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VK_ERROR_INVALID_ANDROID_WINDOW_KHR = 0xC002400, 6691356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VK_ERROR_ANDROID_WINDOW_IN_USE_KHR = 0xC002401, 6705ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 6715ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 6725ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallenum VkDynamicState { 6735ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_VIEWPORT = 0x00000000, 6745ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_SCISSOR = 0x00000001, 6755ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_LINE_WIDTH = 0x00000002, 6765ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_DEPTH_BIAS = 0x00000003, 6775ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_BLEND_CONSTANTS = 0x00000004, 6785ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_DEPTH_BOUNDS = 0x00000005, 6795ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 0x00000006, 6805ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 0x00000007, 6815ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_STENCIL_REFERENCE = 0x00000008, 682d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 683d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 6843e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 68588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentineenum VkSurfaceTransformKHR { 68688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_NONE_KHR = 0x00000000, 68788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_ROT90_KHR = 0x00000001, 68888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_ROT180_KHR = 0x00000002, 68988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_ROT270_KHR = 0x00000003, 69088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_HMIRROR_KHR = 0x00000004, 69188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_HMIRROR_ROT90_KHR = 0x00000005, 69288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_HMIRROR_ROT180_KHR = 0x00000006, 69388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_HMIRROR_ROT270_KHR = 0x00000007, 69488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_INHERIT_KHR = 0x00000008, 69588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 69688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 6973e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 69888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentineenum VkPresentModeKHR { 69988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_PRESENT_MODE_IMMEDIATE_KHR = 0x00000000, 70088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001, 70188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_PRESENT_MODE_FIFO_KHR = 0x00000002, 70203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003, 70388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 70488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 7053e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 70688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentineenum VkColorSpaceKHR { 70788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0x00000000, 70888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 709d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 710d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////////// 711d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Bitfields // 712d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////////// 713d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 714d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Queue capabilities 715d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkQueueFlags 716d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkQueueFlagBits { 717d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUEUE_GRAPHICS_BIT = 0x00000001, /// Queue supports graphics operations 718d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUEUE_COMPUTE_BIT = 0x00000002, /// Queue supports compute operations 71965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_QUEUE_TRANSFER_BIT = 0x00000004, /// Queue supports transfer operations 720b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, /// Queue supports sparse resource memory management operations 721d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 722d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 723d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Memory properties passed into vkAllocMemory(). 724d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkMemoryPropertyFlags 725d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkMemoryPropertyFlagBits { 726d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001, 727d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002, 728d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004, 729d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008, 730d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010, 731d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 732d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 733d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Memory heap flags 734d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkMemoryHeapFlags 735d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkMemoryHeapFlagBits { 736d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001, 737d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 738d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 7393e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall/// Access flags 7403e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Halltype VkFlags VkAccessFlags 7413e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hallbitfield VkAccessFlagBits { 7423e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001, 7433e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_INDEX_READ_BIT = 0x00000002, 7443e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004, 7453e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_UNIFORM_READ_BIT = 0x00000008, 7463e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010, 7473e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_SHADER_READ_BIT = 0x00000020, 7483e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_SHADER_WRITE_BIT = 0x00000040, 7493e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080, 7503e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100, 7513e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200, 7523e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400, 7533e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_TRANSFER_READ_BIT = 0x00000800, 7543e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000, 7553e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_HOST_READ_BIT = 0x00002000, 7563e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_HOST_WRITE_BIT = 0x00004000, 7573e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_MEMORY_READ_BIT = 0x00008000, 7583e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, 759d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 760d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 761d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Buffer usage flags 762d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkBufferUsageFlags 763d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkBufferUsageFlagBits { 7643fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations 7653fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations 766d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, /// Can be used as TBO 767d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, /// Can be used as IBO 768d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, /// Can be used as UBO 769d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, /// Can be used as SSBO 770d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, /// Can be used as source of fixed function index fetch (index buffer) 771d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, /// Can be used as source of fixed function vertex fetch (VBO) 772d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, /// Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer) 773d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 774d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 775d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Buffer creation flags 776d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkBufferCreateFlags 777d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkBufferCreateFlagBits { 7785ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Buffer should support sparse backing 779d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency 780d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers 781d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 782d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 783d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Shader stage flags 784d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkShaderStageFlags 785d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkShaderStageFlagBits { 786d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHADER_STAGE_VERTEX_BIT = 0x00000001, 787ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002, 788ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004, 789d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008, 790d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010, 791d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020, 792c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F, 793d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 794d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHADER_STAGE_ALL = 0x7FFFFFFF, 795d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 796d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 797fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall/// Descriptor pool create flags 798d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkDescriptorPoolCreateFlags 799d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkDescriptorPoolCreateFlagBits { 800fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001, 801fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall} 802fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall 803fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall/// Descriptor pool reset flags 804d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkDescriptorPoolResetFlags 805a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkDescriptorPoolResetFlagBits { 806a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 807fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall 808d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Image usage flags 809d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkImageUsageFlags 810d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkImageUsageFlagBits { 8113fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations 8123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations 813d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types) 814d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, /// Can be used as storage image (STORAGE_IMAGE descriptor type) 815d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, /// Can be used as framebuffer color attachment 8165ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment 817d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, /// Image data not needed outside of rendering 818d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, /// Can be used as framebuffer input attachment 819d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 820d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 821d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Image creation flags 822d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkImageCreateFlags 823d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkImageCreateFlagBits { 8245ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Image should support sparse backing 825d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Image should support sparse backing with partial residency 826d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Image should support constent data access to physical memory blocks mapped into multiple locations of sparse images 8275ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image 8285ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010, /// Allows creating image views with cube type from the created image 829d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 830d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 831b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall/// Image view creation flags 832d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkImageViewCreateFlags 833b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall//bitfield VkImageViewCreateFlagBits { 834b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall//} 835d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 836d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Pipeline creation flags 837d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkPipelineCreateFlags 838d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkPipelineCreateFlagBits { 839d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001, 840d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002, 841d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004, 842d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 843d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 84465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall/// Color component flags 84565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Halltype VkFlags VkColorComponentFlags 84665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallbitfield VkColorComponentFlagBits { 84765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COLOR_COMPONENT_R_BIT = 0x00000001, 84865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COLOR_COMPONENT_G_BIT = 0x00000002, 84965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COLOR_COMPONENT_B_BIT = 0x00000004, 85065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COLOR_COMPONENT_A_BIT = 0x00000008, 851d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 852d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 853d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Fence creation flags 854d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkFenceCreateFlags 855d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkFenceCreateFlagBits { 856d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001, 857d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 858d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 859d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Semaphore creation flags 860d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkSemaphoreCreateFlags 861a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkSemaphoreCreateFlagBits { 862a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 863d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 864d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Format capability flags 865d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkFormatFeatureFlags 866d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkFormatFeatureFlagBits { 867d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types) 868d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, /// Format can be used for storage images (STORAGE_IMAGE descriptor type) 869d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, /// Format supports atomic operations in case it's used for storage images 870d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, /// Format can be used for uniform texel buffers (TBOs) 871d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, /// Format can be used for storage texel buffers (IBOs) 872d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, /// Format supports atomic operations in case it's used for storage texel buffers 873d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, /// Format can be used for vertex buffers (VBOs) 874d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, /// Format can be used for color attachment images 875d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, /// Format supports blending in case it's used for color attachment images 876d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, /// Format can be used for depth/stencil attachment images 8773fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, /// Format can be used as the source image of blits with vkCommandBlitImage 8783fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800, /// Format can be used as the destination image of blits with vkCommandBlitImage 879d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 880d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 881d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Query control flags 882d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkQueryControlFlags 883d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkQueryControlFlagBits { 88465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001, 885d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 886d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 887d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Query result flags 888d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkQueryResultFlags 889d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkQueryResultFlagBits { 890d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_RESULT_DEFAULT = 0x00000000, /// Results of the queries are immediately written to the destination buffer as 32-bit values 891d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_RESULT_64_BIT = 0x00000001, /// Results of the queries are written to the destination buffer as 64-bit values 892d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_RESULT_WAIT_BIT = 0x00000002, /// Results of the queries are waited on before proceeding with the result copy 893d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, /// Besides the results of the query, the availability of the results is also written 894d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, /// Copy the partial results of the query even if the final results aren't available 895d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 896d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 897d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Shader module creation flags 898d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkShaderModuleCreateFlags 899a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkShaderModuleCreateFlagBits { 900a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 901d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 902d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Event creation flags 903d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkEventCreateFlags 904a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkEventCreateFlagBits { 905a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 906d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 907a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall/// Command buffer usage flags 9083fbc856120217247c72fb5ed88500000f3881c45Jesse Halltype VkFlags VkCommandBufferUsageFlags 9093fbc856120217247c72fb5ed88500000f3881c45Jesse Hallbitfield VkCommandBufferUsageFlagBits { 9103fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001, 9113fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002, 9123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004, 913d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 914d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 915d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Pipeline statistics flags 916d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkQueryPipelineStatisticFlags 917d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkQueryPipelineStatisticFlagBits { 918ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, /// Optional 919ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, /// Optional 920ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, /// Optional 921ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, /// Optional 922ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, /// Optional 923ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, /// Optional 924ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, /// Optional 925ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, /// Optional 926ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, /// Optional 927ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, /// Optional 928ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, /// Optional 929d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 930d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 931d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Memory mapping flags 932d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkMemoryMapFlags 933a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkMemoryMapFlagBits { 934a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 935d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 936d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Bitfield of image aspects 937d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkImageAspectFlags 938d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkImageAspectFlagBits { 939d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001, 940d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002, 941d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004, 942d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008, 943d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 944d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 945d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Sparse memory bind flags 946d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkSparseMemoryBindFlags 947091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hallbitfield VkSparseMemoryBindFlagBits { 948091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001, 949091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall} 950d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 951d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Sparse image memory requirements flags 952d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkSparseImageFormatFlags 953d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkSparseImageFormatFlagBits { 954b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, /// Image uses a single miptail region for all array slices 955b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002, /// Image requires mip levels to be an exact multiple of the sparse iamge block size for non-mip-tail levels. 956b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, /// Image uses a non-standard sparse block size 957d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 958d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 959d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Pipeline stages 960d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkPipelineStageFlags 961d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkPipelineStageFlagBits { 962d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, /// Before subsequent commands are processed 963d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, /// Draw/DispatchIndirect command fetch 964d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, /// Vertex/index fetch 965d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, /// Vertex shading 966ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, /// Tessellation control shading 967ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, /// Tessellation evaluation shading 968d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, /// Geometry shading 969d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, /// Fragment shading 970d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, /// Early fragment (depth/stencil) tests 971d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, /// Late fragment (depth/stencil) tests 972d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, /// Color attachment writes 973d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, /// Compute shading 974d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, /// Transfer/copy operations 9755ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_PIPELINE_STAGE_HOST_BIT = 0x00002000, /// Indicates host (CPU) is a source/sink of the dependency 976d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 977091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00004000, /// All stages of the graphics pipeline 978091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00008000, /// All graphics, compute, copy, and transition commands 9795ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 9805ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 9815ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall/// Render pass attachment description flags 982d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkAttachmentDescriptionFlags 983d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkAttachmentDescriptionFlagBits { 9845ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001, /// The attachment may alias physical memory of another attachment in the same renderpass 985d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 986d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 987d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Subpass description flags 988d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkSubpassDescriptionFlags 989d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkSubpassDescriptionFlagBits { 990d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 991d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 992d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Command pool creation flags 9933fbc856120217247c72fb5ed88500000f3881c45Jesse Halltype VkFlags VkCommandPoolCreateFlags 9943fbc856120217247c72fb5ed88500000f3881c45Jesse Hallbitfield VkCommandPoolCreateFlagBits { 9953fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, /// Command buffers have a short lifetime 9963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, /// Command buffers may release their memory individually 997d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 998d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 999d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Command pool reset flags 10003fbc856120217247c72fb5ed88500000f3881c45Jesse Halltype VkFlags VkCommandPoolResetFlags 10013fbc856120217247c72fb5ed88500000f3881c45Jesse Hallbitfield VkCommandPoolResetFlagBits { 10023fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the pool 1003d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1004d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 10053fbc856120217247c72fb5ed88500000f3881c45Jesse Halltype VkFlags VkCommandBufferResetFlags 10063fbc856120217247c72fb5ed88500000f3881c45Jesse Hallbitfield VkCommandBufferResetFlagBits { 10073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the buffer 10085ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 10095ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 1010d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkSampleCountFlags 1011d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkSampleCountFlagBits { 10125ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_1_BIT = 0x00000001, 10135ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_2_BIT = 0x00000002, 10145ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_4_BIT = 0x00000004, 10155ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_8_BIT = 0x00000008, 10165ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_16_BIT = 0x00000010, 10175ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_32_BIT = 0x00000020, 10185ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_64_BIT = 0x00000040, 10195ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 10205ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 1021d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkStencilFaceFlags 1022d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkStencilFaceFlagBits { 10235ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_STENCIL_FACE_NONE = 0x00000000, /// No faces 10245ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_STENCIL_FACE_FRONT_BIT = 0x00000001, /// Front face 10255ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_STENCIL_FACE_BACK_BIT = 0x00000002, /// Back face 1026c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STENCIL_FRONT_AND_BACK = 0x00000003, 1027d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1028d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1029a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Instance creation flags 1030a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkInstanceCreateFlags 1031a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkInstanceCreateFlagBits { 1032a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1033a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1034a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Device creation flags 1035a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkDeviceCreateFlags 1036a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkDeviceCreateFlagBits { 1037a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1038a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1039a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Device queue creation flags 1040a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkDeviceQueueCreateFlags 1041a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkDeviceQueueCreateFlagBits { 1042a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1043a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1044a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Query pool creation flags 1045a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkQueryPoolCreateFlags 1046a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkQueryPoolCreateFlagBits { 1047a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1048a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1049a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Buffer view creation flags 1050a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkBufferViewCreateFlags 1051a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkBufferViewCreateFlagBits { 1052a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1053a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1054a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Pipeline cache creation flags 1055a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineCacheCreateFlags 1056a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineCacheCreateFlagBits { 1057a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1058a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1059a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Pipeline shader stage creation flags 1060a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineShaderStageCreateFlags 1061a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineShaderStageCreateFlagBits { 1062a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1063a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1064a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Descriptor set layout creation flags 1065a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkDescriptorSetLayoutCreateFlags 1066a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkDescriptorSetLayoutCreateFlagBits { 1067a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1068a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1069a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Pipeline vertex input state creation flags 1070a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineVertexInputStateCreateFlags 1071a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineVertexInputStateCreateFlagBits { 1072a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1073a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1074a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Pipeline input assembly state creation flags 1075a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineInputAssemblyStateCreateFlags 1076a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineInputAssemblyStateCreateFlagBits { 1077a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1078a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1079a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Tessellation state creation flags 1080a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineTessellationStateCreateFlags 1081a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineTessellationStateCreateFlagBits { 1082a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1083a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1084a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Viewport state creation flags 1085a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineViewportStateCreateFlags 1086a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineViewportStateCreateFlagBits { 1087a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1088a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 10893fbc856120217247c72fb5ed88500000f3881c45Jesse Hall/// Rasterization state creation flags 10903fbc856120217247c72fb5ed88500000f3881c45Jesse Halltype VkFlags VkPipelineRasterizationStateCreateFlags 10913fbc856120217247c72fb5ed88500000f3881c45Jesse Hall//bitfield VkPipelineRasterizationStateCreateFlagBits { 1092a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1093a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1094a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Multisample state creation flags 1095a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineMultisampleStateCreateFlags 1096a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineMultisampleStateCreateFlagBits { 1097a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1098a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1099a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Color blend state creation flags 1100a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineColorBlendStateCreateFlags 1101a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineColorBlendStateCreateFlagBits { 1102a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1103a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1104a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Depth/stencil state creation flags 1105a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineDepthStencilStateCreateFlags 1106a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineDepthStencilStateCreateFlagBits { 1107a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1108a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1109a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Dynamic state creation flags 1110a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineDynamicStateCreateFlags 1111a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineDynamicStateCreateFlagBits { 1112a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1113a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1114a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Pipeline layout creation flags 1115a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineLayoutCreateFlags 1116a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineLayoutCreateFlagBits { 1117a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1118a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1119a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Sampler creation flags 1120a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkSamplerCreateFlags 1121a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkSamplerCreateFlagBits { 1122a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1123a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1124a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Render pass creation flags 1125a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkRenderPassCreateFlags 1126a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkRenderPassCreateFlagBits { 1127a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1128a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1129a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Framebuffer creation flags 1130a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkFramebufferCreateFlags 1131a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkFramebufferCreateFlagBits { 1132a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1133a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1134dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall/// Dependency flags 1135dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Halltype VkFlags VkDependencyFlags 1136dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hallbitfield VkDependencyFlagBits { 1137dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VK_DEPENDENCY_BY_REGION_BIT = 0x00000001, 1138dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall} 1139dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall 1140c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall/// Cull mode flags 1141c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Halltype VkFlags VkCullModeFlags 1142c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hallbitfield VkCullModeFlagBits { 1143c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_CULL_MODE_NONE = 0x00000000, 1144c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_CULL_MODE_FRONT_BIT = 0x00000001, 1145c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_CULL_MODE_BACK_BIT = 0x00000002, 1146c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_CULL_MODE_FRONT_AND_BACK = 0x00000003, 1147c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall} 1148c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall 11493e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 1150d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkSurfaceTransformFlagsKHR 11513e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 1152d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkSurfaceTransformFlagBitsKHR { 115388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_NONE_BIT_KHR = 0x00000001, 115488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_ROT90_BIT_KHR = 0x00000002, 115588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_ROT180_BIT_KHR = 0x00000004, 115688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_ROT270_BIT_KHR = 0x00000008, 115788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_HMIRROR_BIT_KHR = 0x00000010, 115888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_HMIRROR_ROT90_BIT_KHR = 0x00000020, 115988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_HMIRROR_ROT180_BIT_KHR = 0x00000040, 116088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_HMIRROR_ROT270_BIT_KHR = 0x00000080, 116188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100, 116288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 1163d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 11643e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 1165a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkCompositeAlphaFlagsKHR 11663e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 1167a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallbitfield VkCompositeAlphaFlagBitsKHR { 1168a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, 1169a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002, 1170a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004, 1171a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008, 1172a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 1173a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 11743e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 1175d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkDisplayPlaneAlphaFlagsKHR 11763e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 1177d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkDisplayPlaneAlphaFlagBitsKHR { 11781356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000001, 11791356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000002, 11801356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000004, 11811356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 11821356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 11831356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 1184d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall////////////////// 1185d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Structures // 1186d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall////////////////// 1187d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1188d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkOffset2D { 1189d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 x 1190d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 y 1191d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1192d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1193d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkOffset3D { 1194d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 x 1195d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 y 1196d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 z 1197d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1198d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1199d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkExtent2D { 1200d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 width 1201d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 height 1202d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1203d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1204d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkExtent3D { 1205d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 width 1206d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 height 1207d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 depth 1208d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1209d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1210d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkViewport { 121165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall f32 x 121265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall f32 y 1213d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 width 1214d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 height 1215d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 minDepth 1216d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 maxDepth 1217d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1218d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1219d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkRect2D { 1220d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkOffset2D offset 1221d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent2D extent 1222d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1223d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1224a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hallclass VkClearRect { 1225a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VkRect2D rect 1226a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall u32 baseArrayLayer 12273fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 layerCount 1228d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1229d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 123065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallclass VkComponentMapping { 123165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkComponentSwizzle r 123265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkComponentSwizzle g 123365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkComponentSwizzle b 123465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkComponentSwizzle a 1235d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1236d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1237d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPhysicalDeviceProperties { 1238d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 apiVersion 1239d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 driverVersion 124065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 vendorID 124165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 deviceID 1242d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDeviceType deviceType 124365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] deviceName 124465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u8[VK_UUID_SIZE] pipelineCacheUUID 12455ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkPhysicalDeviceLimits limits 12465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkPhysicalDeviceSparseProperties sparseProperties 1247d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1248d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1249d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkExtensionProperties { 125065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall char[VK_MAX_EXTENSION_NAME_SIZE] extensionName /// extension name 1251d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 specVersion /// version of the extension specification implemented 1252d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1253d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1254d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkLayerProperties { 125565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall char[VK_MAX_EXTENSION_NAME_SIZE] layerName /// layer name 12563fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 specVersion /// version of the layer specification implemented 12573fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 implementationVersion /// build or release version of the layer's library 125865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall char[VK_MAX_DESCRIPTION_SIZE] description /// Free-form description of the layer 1259d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1260d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1261a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hallclass VkSubmitInfo { 126203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO 126303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall const void* pNext /// Next structure in chain 126403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 waitSemaphoreCount 1265a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall const VkSemaphore* pWaitSemaphores 126603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 commandBufferCount 12673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkCommandBuffer* pCommandBuffers 126803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 signalSemaphoreCount 1269a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall const VkSemaphore* pSignalSemaphores 1270a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall} 1271a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall 1272d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkApplicationInfo { 1273d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO 1274d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Next structure in chain 12753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const char* pApplicationName 12763fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 applicationVersion 1277d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* pEngineName 1278d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 engineVersion 1279d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 apiVersion 1280d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1281d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 12823fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkAllocationCallbacks { 1283d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall void* pUserData 12843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall PFN_vkAllocationFunction pfnAllocation 12853fbc856120217247c72fb5ed88500000f3881c45Jesse Hall PFN_vkReallocationFunction pfnReallocation 1286d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall PFN_vkFreeFunction pfnFree 12873fbc856120217247c72fb5ed88500000f3881c45Jesse Hall PFN_vkInternalAllocationNotification pfnInternalAllocation 128803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall PFN_vkInternalFreeNotification pfnInternalFree 1289d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1290d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1291d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkDeviceQueueCreateInfo { 12925ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkStructureType sStype /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO 12935ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const void* pNext /// Pointer to next structure 1294a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDeviceQueueCreateFlags flags 1295d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queueFamilyIndex 129603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 queuePriorityCount 1297fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall const f32* pQueuePriorities 1298d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1299d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1300d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkDeviceCreateInfo { 1301d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO 1302d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1303a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDeviceCreateFlags flags 1304ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 requestedQueueRecordCount 1305d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkDeviceQueueCreateInfo* pRequestedQueues 130603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 enabledLayerNameCount 1307d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled 130803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 enabledExtensionNameCount 1309d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* const* ppEnabledExtensionNames 1310d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPhysicalDeviceFeatures* pEnabledFeatures 1311d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1312d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1313d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkInstanceCreateInfo { 1314d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO 1315d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1316a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkInstanceCreateFlags flags 13173fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkApplicationInfo* pApplicationInfo 131803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 enabledLayerNameCount 1319d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled 132003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 enabledExtensionNameCount 1321d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* const* ppEnabledExtensionNames /// Extension names to be enabled 1322d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1323d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 13245ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallclass VkQueueFamilyProperties { 1325d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueueFlags queueFlags /// Queue flags 1326d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queueCount 1327acfa53409aa45de2c12f10617222e0d593e8f2dfJesse Hall u32 timestampValidBits 132865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkExtent3D minImageTransferGranularity 1329d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1330d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1331d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPhysicalDeviceMemoryProperties { 1332d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 memoryTypeCount 1333d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryType[VK_MAX_MEMORY_TYPES] memoryTypes 1334d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 memoryHeapCount 1335d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryHeap[VK_MAX_MEMORY_HEAPS] memoryHeaps 1336d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1337d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 13383fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkMemoryAllocateInfo { 1339d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO 1340d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 13415ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize allocationSize /// Size of memory allocation 1342d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 memoryTypeIndex /// Index of the of the memory type to allocate from 1343d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1344d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1345d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkMemoryRequirements { 13465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size /// Specified in bytes 13475ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize alignment /// Specified in bytes 1348d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 memoryTypeBits /// Bitfield of the allowed memory type indices into memoryTypes[] for this object 1349d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1350d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1351d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSparseImageFormatProperties { 13523e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkImageAspectFlagBits aspectMask 1353d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D imageGranularity 1354d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSparseImageFormatFlags flags 1355d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1356d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1357d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSparseImageMemoryRequirements { 1358b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkSparseImageFormatProperties formatProperties 135965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 imageMipTailStartLod 13605ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment 13615ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment 13625ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment 1363d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1364d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1365d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkMemoryType { 1366d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryPropertyFlags propertyFlags /// Memory properties of this memory type 1367d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 heapIndex /// Index of the memory heap allocations of this memory type are taken from 1368d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1369d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1370d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkMemoryHeap { 13715ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size /// Available memory in the heap 1372d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryHeapFlags flags /// Flags for the heap 1373d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1374d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1375d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkMappedMemoryRange { 1376d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE 1377d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 13783fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory /// Mapped memory object 13795ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset /// Offset within the mapped memory the range starts from 13805ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size /// Size of the range within the mapped memory 1381d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1382d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1383d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkFormatProperties { 1384d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormatFeatureFlags linearTilingFeatures /// Format features in case of linear tiling 1385d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormatFeatureFlags optimalTilingFeatures /// Format features in case of optimal tiling 13865ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkFormatFeatureFlags bufferFeatures /// Format features supported by buffers 1387d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1388d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1389d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageFormatProperties { 13905ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkExtent3D maxExtent /// max image dimensions for this resource type 13915ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 maxMipLevels /// max number of mipmap levels for this resource type 1392a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall u32 maxArrayLayers /// max array layers for this resource type 13935ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkSampleCountFlags sampleCounts /// supported sample counts for this resource type 13945ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize maxResourceSize /// max size (in bytes) of this resource type 13955ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 13965ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 1397a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hallclass VkDescriptorImageInfo { 1398a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VkSampler sampler 1399a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VkImageView imageView 1400a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VkImageLayout imageLayout 1401a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall} 1402a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall 14035ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallclass VkDescriptorBufferInfo { 14045ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBuffer buffer /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC] 14055ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset /// Base offset from buffer start in bytes to update in the descriptor set. 14065ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize range /// Size in bytes of the buffer resource for this descriptor update. 1407d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1408d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1409d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkWriteDescriptorSet { 1410d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET 1411d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 14123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDescriptorSet dstSet /// Destination descriptor set 14133fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstBinding /// Binding within the destination descriptor set to write 14143fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstArrayElement /// Array element within the destination binding to write 141503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 descriptorCount /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>) 1416d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDescriptorType descriptorType /// Descriptor type to write (determines which fields of the array pointed by <pDescriptors> are going to be used) 1417fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall const VkDescriptorImageInfo* pImageInfo 1418fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall const VkDescriptorBufferInfo* pBufferInfo 1419fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall const VkBufferView* pTexelBufferView 1420d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1421d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1422d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkCopyDescriptorSet { 1423d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET 1424d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1425d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDescriptorSet srcSet /// Source descriptor set 1426d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 srcBinding /// Binding within the source descriptor set to copy from 1427d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 srcArrayElement /// Array element within the source binding to copy from 14283fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDescriptorSet dstSet /// Destination descriptor set 14293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstBinding /// Binding within the destination descriptor set to copy to 14303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstArrayElement /// Array element within the destination binding to copy to 143103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 descriptorCount /// Number of descriptors to copy 1432d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1433d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1434d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkBufferCreateInfo { 1435d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO 1436d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure. 1437a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkBufferCreateFlags flags /// Buffer creation flags 14385ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size /// Specified in bytes 1439d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBufferUsageFlags usage /// Buffer usage flags 1440d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSharingMode sharingMode 144103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 queueFamilyIndexCount 1442d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const u32* pQueueFamilyIndices 1443d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1444d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1445d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkBufferViewCreateInfo { 1446d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO 1447d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure. 1448a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkBufferViewCreateFlags flags 1449d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer 1450d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format /// Optionally specifies format of elements 14515ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset /// Specified in bytes 14525ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize range /// View size specified in bytes 1453d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1454d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1455d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageSubresource { 14563e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkImageAspectFlagBits aspectMask 1457d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 mipLevel 14585ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 arrayLayer 1459d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1460d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1461d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageSubresourceRange { 14625ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkImageAspectFlags aspectMask 1463d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 baseMipLevel 14643fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 levelCount 14655ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 baseArrayLayer 14663fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 layerCount 1467d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1468d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1469d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkMemoryBarrier { 1470d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER 1471d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure. 14723e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags srcAccessMask 14733e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags dstAccessMask 1474d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1475d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1476d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkBufferMemoryBarrier { 1477d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER 1478d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure. 14793e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags srcAccessMask 14803e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags dstAccessMask 1481d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 srcQueueFamilyIndex /// Queue family to transition ownership from 14823fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstQueueFamilyIndex /// Queue family to transition ownership to 1483d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer /// Buffer to sync 14845ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset /// Offset within the buffer to sync 14855ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size /// Amount of bytes to sync 1486d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1487d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1488d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageMemoryBarrier { 1489d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER 1490d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure. 14913e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags srcAccessMask 14923e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags dstAccessMask 1493d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout oldLayout /// Current layout of the image 1494d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout newLayout /// New layout to transition the image to 1495d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 srcQueueFamilyIndex /// Queue family to transition ownership from 14963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstQueueFamilyIndex /// Queue family to transition ownership to 1497d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image /// Image to sync 1498d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageSubresourceRange subresourceRange /// Subresource range to sync 1499d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1500d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1501d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageCreateInfo { 1502d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO 1503d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure. 1504a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkImageCreateFlags flags /// Image creation flags 1505d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageType imageType 1506d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format 1507d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D extent 1508d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 mipLevels 1509a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall u32 arrayLayers 1510091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlagBits samples 1511d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageTiling tiling 1512d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageUsageFlags usage /// Image usage flags 1513d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSharingMode sharingMode /// Cross-queue-family sharing mode 151403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 queueFamilyIndexCount /// Number of queue families to share across 1515d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const u32* pQueueFamilyIndices /// Array of queue family indices to share across 15165ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkImageLayout initialLayout /// Initial image layout for all subresources 1517d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1518d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1519d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSubresourceLayout { 15205ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset /// Specified in bytes 15215ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size /// Specified in bytes 15225ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize rowPitch /// Specified in bytes 15235ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize depthPitch /// Specified in bytes 1524d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1525d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1526d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageViewCreateInfo { 1527d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO 1528d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1529a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkImageViewCreateFlags flags 1530d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image 1531d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageViewType viewType 1532d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format 153365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkComponentMapping components 1534d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageSubresourceRange subresourceRange 1535d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1536d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1537d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkBufferCopy { 15385ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize srcOffset /// Specified in bytes 15393fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize dstOffset /// Specified in bytes 1540b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkDeviceSize size /// Specified in bytes 1541d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1542d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1543a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkSparseMemoryBind { 1544b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkDeviceSize resourceOffset /// Specified in bytes 1545b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkDeviceSize size /// Specified in bytes 15463fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory 15473fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize memoryOffset /// Specified in bytes 1548d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSparseMemoryBindFlags flags 1549d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1550d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1551a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkSparseImageMemoryBind { 1552d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageSubresource subresource 1553d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkOffset3D offset 1554d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D extent 15553fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory 15563fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize memoryOffset /// Specified in bytes 1557d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSparseMemoryBindFlags flags 1558d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1559d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1560a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkSparseBufferMemoryBindInfo { 1561a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkBuffer buffer 1562a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 bindCount 1563a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSparseMemoryBind* pBinds 1564a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 1565a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1566a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkSparseImageOpaqueMemoryBindInfo { 1567a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkImage image 1568a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 bindCount 1569a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSparseMemoryBind* pBinds 1570a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 1571a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1572a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkSparseImageMemoryBindInfo { 1573a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkImage image 1574a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 bindCount 1575a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSparseMemoryBind* pBinds 1576a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 1577a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1578a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkBindSparseInfo { 1579a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO 1580a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const void* pNext 1581a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 waitSemaphoreCount 1582a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSemaphore* pWaitSemaphores 1583a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 numBufferBinds 1584a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSparseBufferMemoryBindInfo* pBufferBinds 1585a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 numImageOpaqueBinds 1586a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds 1587a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 numImageBinds 1588a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSparseImageMemoryBindInfo* pImageBinds 1589a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 signalSemaphoreCount 1590a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSemaphore* pSignalSemaphores 1591a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 1592a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 159365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallclass VkImageSubresourceLayers { 159465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageAspectFlags aspectMask 15955ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 mipLevel 1596a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall u32 baseArrayLayer 15973fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 layerCount 15985ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 15995ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 1600d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageCopy { 160165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers srcSubresource 1602d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images 160365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers dstSubresource 16043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkOffset3D dstOffset /// Specified in pixels for both compressed and uncompressed images 1605d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D extent /// Specified in pixels for both compressed and uncompressed images 1606d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1607d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1608d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageBlit { 160965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers srcSubresource 1610d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images 1611d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D srcExtent /// Specified in pixels for both compressed and uncompressed images 161265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers dstSubresource 16133fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkOffset3D dstOffset /// Specified in pixels for both compressed and uncompressed images 16143fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkExtent3D dstExtent /// Specified in pixels for both compressed and uncompressed images 1615d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1616d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1617d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkBufferImageCopy { 16185ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize bufferOffset /// Specified in bytes 1619d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 bufferRowLength /// Specified in texels 1620d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 bufferImageHeight 162165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers imageSubresource 1622d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkOffset3D imageOffset /// Specified in pixels for both compressed and uncompressed images 1623d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D imageExtent /// Specified in pixels for both compressed and uncompressed images 1624d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1625d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1626d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageResolve { 162765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers srcSubresource 1628d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkOffset3D srcOffset 162965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers dstSubresource 16303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkOffset3D dstOffset 1631d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D extent 1632d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1633d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1634d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkShaderModuleCreateInfo { 1635d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO 1636d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1637a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkShaderModuleCreateFlags flags /// Reserved 1638d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall platform.size_t codeSize /// Specified in bytes 1639a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall const u32* pCode /// Binary code of size codeSize 1640d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1641d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1642d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkDescriptorSetLayoutBinding { 1643091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall u32 binding 1644d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDescriptorType descriptorType /// Type of the descriptors in this binding 1645d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 arraySize /// Number of descriptors in this binding 1646d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkShaderStageFlags stageFlags /// Shader stages this binding is visible to 1647d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkSampler* pImmutableSamplers /// Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains <count> number of elements) 1648d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1649d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1650d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkDescriptorSetLayoutCreateInfo { 1651d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO 1652d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1653a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDescriptorSetLayoutCreateFlags flags 165403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 bindingCount /// Number of bindings in the descriptor set layout 16553e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall const VkDescriptorSetLayoutBinding* pBinding /// Array of descriptor set layout bindings 1656d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1657d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 165865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallclass VkDescriptorPoolSize { 1659d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDescriptorType type 166003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 descriptorCount 1661d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1662d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1663d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkDescriptorPoolCreateInfo { 1664d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO 1665d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1666fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkDescriptorPoolCreateFlags flags 16675ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 maxSets 166865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 poolSizeCount 166965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall const VkDescriptorPoolSize* pPoolSizes 1670d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1671d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 16723fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkDescriptorSetAllocateInfo { 1673fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO 1674fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall const void* pNext /// Pointer to next structure 1675fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkDescriptorPool descriptorPool 167603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 setCount 1677fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall const VkDescriptorSetLayout* pSetLayouts 1678fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall} 1679fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall 1680d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSpecializationMapEntry { 168165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 constantID /// The SpecConstant ID specified in the BIL 1682d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 offset /// Offset of the value in the data block 1683b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall platform.size_t size /// Size in bytes of the SpecConstant 1684d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1685d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1686d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSpecializationInfo { 1687d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 mapEntryCount /// Number of entries in the map 1688b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall const VkSpecializationMapEntry* pMapEntries /// Array of map entries 1689d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall platform.size_t dataSize /// Size in bytes of pData 1690d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pData /// Pointer to SpecConstant data 1691d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1692d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1693d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineShaderStageCreateInfo { 1694d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO 1695d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1696a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineShaderStageCreateFlags flags 16973e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkShaderStageFlagBits stage 16983e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkShaderModule module 16993e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall const char* pName 1700d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkSpecializationInfo* pSpecializationInfo 1701d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1702d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1703d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkComputePipelineCreateInfo { 1704d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO 1705d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1706d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineCreateFlags flags /// Pipeline creation flags 1707a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineShaderStageCreateInfo stage 1708d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineLayout layout /// Interface layout of the pipeline 1709d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 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 1710d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 basePipelineIndex /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of 1711d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1712d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1713d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkVertexInputBindingDescription { 1714b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 binding /// Vertex buffer binding id 1715b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 stride /// Distance between vertices in bytes (0 = no advancement) 171665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkVertexInputRate inputRate /// Rate at which binding is incremented 1717d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1718d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1719d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkVertexInputAttributeDescription { 1720b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 location /// location of the shader vertex attrib 1721b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 binding /// Vertex buffer binding id 1722b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkFormat format /// format of source data 1723b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 offset /// Offset of first element in bytes from base of vertex 1724d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1725d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1726d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineVertexInputStateCreateInfo { 172703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkStructureType sType /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO 172803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall const void* pNext /// Pointer to next structure 1729a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineVertexInputStateCreateFlags flags 173003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 vertexBindingDescriptionCount /// number of bindings 1731d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkVertexInputBindingDescription* pVertexBindingDescriptions 173203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 vertexAttributeDescriptionCount /// number of attributes 1733d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkVertexInputAttributeDescription* pVertexAttributeDescriptions 1734d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1735d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1736d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineInputAssemblyStateCreateInfo { 1737d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO 1738d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1739a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineInputAssemblyStateCreateFlags flags 1740d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPrimitiveTopology topology 17415ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 primitiveRestartEnable 1742d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1743d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1744d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineTessellationStateCreateInfo { 1745d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO 1746d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1747a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineTessellationStateCreateFlags flags 1748d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 patchControlPoints 1749d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1750d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1751d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineViewportStateCreateInfo { 1752d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO 1753d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1754a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineViewportStateCreateFlags flags 1755d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 viewportCount 17565ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkViewport* pViewports 17575ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 scissorCount 17585ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkRect2D* pScissors 1759d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1760d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 17613fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkPipelineRasterizationStateCreateInfo { 176265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO 1763d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 17643fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkPipelineRasterizationStateCreateFlags flags 1765ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VkBool32 depthClampEnable 17665ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 rasterizerDiscardEnable 176765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkPolygonMode polygonMode /// optional (GL45) 1768c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VkCullModeFlags cullMode 1769d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFrontFace frontFace 17705ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 depthBiasEnable 1771a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall f32 depthBiasConstantFactor 17725ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 depthBiasClamp 1773a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall f32 depthBiasSlopeFactor 17745ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 lineWidth 1775d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1776d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1777d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineMultisampleStateCreateInfo { 1778d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO 1779d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1780a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineMultisampleStateCreateFlags flags 1781091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlagBits rasterizationSamples /// Number of samples used for rasterization 17825ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sampleShadingEnable /// optional (GL45) 1783d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 minSampleShading /// optional (GL45) 17845ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkSampleMask* pSampleMask 1785acfa53409aa45de2c12f10617222e0d593e8f2dfJesse Hall VkBool32 alphaToCoverageEnable 1786acfa53409aa45de2c12f10617222e0d593e8f2dfJesse Hall VkBool32 alphaToOneEnable 1787d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1788d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1789d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineColorBlendAttachmentState { 17905ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 blendEnable 179165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBlendFactor srcColorBlendFactor 179265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBlendFactor dstColorBlendFactor 179365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBlendOp colorBlendOp 179465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBlendFactor srcAlphaBlendFactor 179565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBlendFactor dstAlphaBlendFactor 179665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBlendOp alphaBlendOp 179765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkColorComponentFlags colorWriteMask 1798d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1799d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1800d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineColorBlendStateCreateInfo { 1801d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO 1802d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1803a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineColorBlendStateCreateFlags flags 18045ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 logicOpEnable 1805d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkLogicOp logicOp 1806d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 attachmentCount /// # of pAttachments 1807d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineColorBlendAttachmentState* pAttachments 1808b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall f32[4] blendConstants 1809d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1810d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1811d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkStencilOpState { 181265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkStencilOp failOp 181365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkStencilOp passOp 181465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkStencilOp depthFailOp 181565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkCompareOp compareOp 181665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 compareMask 181765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 writeMask 181865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 reference 1819d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1820d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1821d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineDepthStencilStateCreateInfo { 1822d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO 1823d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1824a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineDepthStencilStateCreateFlags flags 18255ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 depthTestEnable 18265ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 depthWriteEnable 1827d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkCompareOp depthCompareOp 18285ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 depthBoundsTestEnable /// optional (depth_bounds_test) 18295ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 stencilTestEnable 1830d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStencilOpState front 1831d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStencilOpState back 18325ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 minDepthBounds 18335ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 maxDepthBounds 18345ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 18355ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 18365ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallclass VkPipelineDynamicStateCreateInfo { 18375ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO 18385ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const void* pNext /// Pointer to next structure 1839a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineDynamicStateCreateFlags flags 18405ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 dynamicStateCount 18415ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkDynamicState* pDynamicStates 1842d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1843d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1844d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkGraphicsPipelineCreateInfo { 1845a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO 1846a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const void* pNext /// Pointer to next structure 1847a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineCreateFlags flags /// Pipeline creation flags 1848d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 stageCount 1849a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkPipelineShaderStageCreateInfo* pStages /// One entry for each active shader stage 1850d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineVertexInputStateCreateInfo* pVertexInputState 1851d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState 1852d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineTessellationStateCreateInfo* pTessellationState 1853d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineViewportStateCreateInfo* pViewportState 18543fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkPipelineRasterizationStateCreateInfo* pRasterizationState 1855d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineMultisampleStateCreateInfo* pMultisampleState 1856d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState 1857d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineColorBlendStateCreateInfo* pColorBlendState 18585ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkPipelineDynamicStateCreateInfo* pDynamicState 1859a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineLayout layout /// Interface layout of the pipeline 1860d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRenderPass renderPass 1861d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 subpass 1862a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 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 1863a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall s32 basePipelineIndex /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of 1864d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1865d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1866d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineCacheCreateInfo { 1867b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO 1868b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall const void* pNext /// Pointer to next structure 1869a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineCacheCreateFlags flags 1870b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall platform.size_t initialDataSize /// Size of initial data to populate cache, in bytes 1871b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall const void* pInitialData /// Initial data to populate cache 1872d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1873d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1874d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPushConstantRange { 1875d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkShaderStageFlags stageFlags /// Which stages use the range 187603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 offset /// Start of the range, in bytes 187703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 size /// Length of the range, in bytes 1878d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1879d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1880d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineLayoutCreateInfo { 1881d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO 1882d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1883a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineLayoutCreateFlags flags 188403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 setLayoutCount /// Number of descriptor sets interfaced by the pipeline 1885d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkDescriptorSetLayout* pSetLayouts /// Array of <setCount> number of descriptor set layout objects defining the layout of the 1886d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 pushConstantRangeCount /// Number of push-constant ranges used by the pipeline 1887d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPushConstantRange* pPushConstantRanges /// Array of pushConstantRangeCount number of ranges used by various shader stages 1888d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1889d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1890d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSamplerCreateInfo { 1891d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO 1892d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1893a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkSamplerCreateFlags flags 189423ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkFilter magFilter /// Filter mode for magnification 189523ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkFilter minFilter /// Filter mode for minifiation 189623ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkSamplerMipmapMode mipmapMode /// Mipmap selection mode 189723ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkSamplerAddressMode addressModeU 189823ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkSamplerAddressMode addressModeV 189923ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkSamplerAddressMode addressModeW 1900d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 mipLodBias 1901d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 maxAnisotropy 19025ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 compareEnable 1903d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkCompareOp compareOp 1904d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 minLod 1905d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 maxLod 1906d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBorderColor borderColor 19075ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 unnormalizedCoordinates 1908d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1909d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 19103fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkCommandPoolCreateInfo { 19113fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO 1912d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 19133fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPoolCreateFlags flags /// Command pool creation flags 1914a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 queueFamilyIndex 1915d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1916d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 19173fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkCommandBufferAllocateInfo { 19183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO 1919d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 19203fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPool commandPool 19213fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBufferLevel level 192203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 bufferCount 1923d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1924d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 19253fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkCommandBufferBeginInfo { 19263fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO 1927d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 19283fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBufferUsageFlags flags /// Command buffer usage flags 1929d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRenderPass renderPass /// Render pass for secondary command buffers 19305ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 subpass 1931d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFramebuffer framebuffer /// Framebuffer for secondary command buffers 1932d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1933d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1934d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkRenderPassBeginInfo { 1935d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO 1936d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1937d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRenderPass renderPass 1938d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFramebuffer framebuffer 1939d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRect2D renderArea 19405ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 clearValueCount 19415ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkClearValue* pClearValues 1942d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1943d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1944d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@union 1945d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared. 1946d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkClearColorValue { 19475ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32[4] float32 19485ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall s32[4] int32 19495ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32[4] uint32 1950d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1951d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1952d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkClearDepthStencilValue { 1953d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 depth 1954d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 stencil 1955d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1956d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1957d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@union 1958d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared. 1959d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkClearValue { 1960d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkClearColorValue color 19615ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkClearDepthStencilValue depthStencil 1962d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1963d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1964ae38f7355fd03b777313e13586585a74e0dee05bJesse Hallclass VkClearAttachment { 1965ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VkImageAspectFlags aspectMask 1966ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 colorAttachment 1967ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VkClearValue clearValue 1968ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall} 1969ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall 1970d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkAttachmentDescription { 1971a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkAttachmentDescriptionFlags flags 1972d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format 1973091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlagBits samples 1974d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkAttachmentLoadOp loadOp /// Load op for color or depth data 1975d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkAttachmentStoreOp storeOp /// Store op for color or depth data 1976d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkAttachmentLoadOp stencilLoadOp /// Load op for stencil data 1977d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkAttachmentStoreOp stencilStoreOp /// Store op for stencil data 1978d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout initialLayout 1979d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout finalLayout 1980d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1981d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1982d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkAttachmentReference { 1983d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 attachment 1984d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout layout 1985d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1986d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1987d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSubpassDescription { 1988d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSubpassDescriptionFlags flags 1989a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineBindPoint pipelineBindPoint /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now 199003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 inputAttachmentCount 19915ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkAttachmentReference* pInputAttachments 199203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 colorAttachmentCount 19935ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkAttachmentReference* pColorAttachments 19945ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkAttachmentReference* pResolveAttachments 1995c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall const VkAttachmentReference* pDepthStencilAttachment 199603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 preserveAttachmentCount 19975ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkAttachmentReference* pPreserveAttachments 1998d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1999d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2000d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSubpassDependency { 2001d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 srcSubpass 20023fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstSubpass 2003d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineStageFlags srcStageMask 20043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkPipelineStageFlags dstStageMask 20053e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags srcAccessMask 20063e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags dstAccessMask 2007dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkDependencyFlags dependencyFlags 2008d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2009d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2010d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkRenderPassCreateInfo { 2011d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO 2012d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2013a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkRenderPassCreateFlags flags 2014d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 attachmentCount 2015d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkAttachmentDescription* pAttachments 2016d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 subpassCount 2017d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkSubpassDescription* pSubpasses 2018d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 dependencyCount 2019d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkSubpassDependency* pDependencies 2020d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2021d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2022d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkEventCreateInfo { 2023d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO 2024d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2025d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEventCreateFlags flags /// Event creation flags 2026d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2027d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2028d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkFenceCreateInfo { 2029d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO 2030d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2031d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFenceCreateFlags flags /// Fence creation flags 2032d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2033d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2034d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPhysicalDeviceFeatures { 20355ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined 20365ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls 20375ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 imageCubeArray /// image views which are arrays of cube maps 20385ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 independentBlend /// blending operations are controlled per-attachment 20395ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 geometryShader /// geometry stage 20405ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 tessellationShader /// tessellation control and evaluation stage 20415ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sampleRateShading /// per-sample shading and interpolation 20423fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkBool32 dualSrcBlend /// blend operations which take two sources 20435ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 logicOp /// logic operations 20445ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 multiDrawIndirect /// multi draw indirect 2045ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VkBool32 depthClamp /// depth clamping 20465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 depthBiasClamp /// depth bias clamping 20475ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 fillModeNonSolid /// point and wireframe fill modes 20485ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 depthBounds /// depth bounds test 20495ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 wideLines /// lines with width greater than 1 20505ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 largePoints /// points with size greater than 1 2051fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkBool32 alphaToOne /// The fragment alpha channel can be forced to maximum representable alpha value 2052fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkBool32 multiViewport 2053fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkBool32 samplerAnisotropy 20545ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 textureCompressionETC2 /// ETC texture compression formats 20555ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats 20565ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 textureCompressionBC /// BC1-7 texture compressed formats 205765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBool32 occlusionQueryPrecise 20585ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 pipelineStatisticsQuery /// pipeline statistics query 2059dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkBool32 vertexPipelineStoresAndAtomics 2060dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkBool32 fragmentStoresAndAtomics 2061dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkBool32 shaderTessellationAndGeometryPointSize 20625ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderImageGatherExtended /// texture gather with run-time values and independent offsets 20635ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images 20645ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images 2065d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VkBool32 shaderStorageImageReadWithoutFormat 2066d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VkBool32 shaderStorageImageWriteWithoutFormat 20675ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices 20685ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices 20695ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices 20705ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices 20715ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderClipDistance /// clip distance in shaders 20725ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderCullDistance /// cull distance in shaders 20735ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders 20745ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderInt64 /// 64-bit integers in shaders 20755ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderInt16 /// 16-bit integers in shaders 20765ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support) 207765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBool32 shaderResourceMinLod /// shader can use texture operations that specify minimum resource LOD 20785ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseBinding /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level 20795ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers 20805ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images 20815ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images 20825ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples 20835ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples 20845ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples 20855ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples 20865ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in) 2087d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VkBool32 variableMultisampleRate 2088d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2089d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2090d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPhysicalDeviceLimits { 2091d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// resource maximum sizes 2092d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxImageDimension1D /// max 1D image dimension 2093d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxImageDimension2D /// max 2D image dimension 2094d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxImageDimension3D /// max 3D image dimension 2095d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxImageDimensionCube /// max cubemap image dimension 2096d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxImageArrayLayers /// max layers for image arrays 2097b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 maxTexelBufferElements 2098fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall u32 maxUniformBufferRange /// max uniform buffer size (bytes) 2099fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall u32 maxStorageBufferRange /// max storage buffer size (bytes) 2100d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxPushConstantsSize /// max size of the push constants pool (bytes) 2101d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// memory limits 2102d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxMemoryAllocationCount /// max number of device memory allocations supported 2103091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall u32 maxSamplerAllocationCount 21045ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage 21055ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize sparseAddressSpaceSize /// Total address space available for sparse allocations (bytes) 2106d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// descriptor set limits 2107d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxBoundDescriptorSets /// max number of descriptors sets that can be bound to a pipeline 2108d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxPerStageDescriptorSamplers /// max num of samplers allowed per-stage in a descriptor set 2109d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxPerStageDescriptorUniformBuffers /// max num of uniform buffers allowed per-stage in a descriptor set 2110d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxPerStageDescriptorStorageBuffers /// max num of storage buffers allowed per-stage in a descriptor set 2111d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxPerStageDescriptorSampledImages /// max num of sampled images allowed per-stage in a descriptor set 2112d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxPerStageDescriptorStorageImages /// max num of storage images allowed per-stage in a descriptor set 2113e1b12783fff0b8e2defcc94c54fac8d737e6b996Jesse Hall u32 maxPerStageDescriptorInputAttachments 2114d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDescriptorSetSamplers /// max num of samplers allowed in all stages in a descriptor set 2115d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDescriptorSetUniformBuffers /// max num of uniform buffers allowed in all stages in a descriptor set 21165ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 maxDescriptorSetUniformBuffersDynamic /// max num of dynamic uniform buffers allowed in all stages in a descriptor set 2117d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDescriptorSetStorageBuffers /// max num of storage buffers allowed in all stages in a descriptor set 21185ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 maxDescriptorSetStorageBuffersDynamic /// max num of dynamic storage buffers allowed in all stages in a descriptor set 2119d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDescriptorSetSampledImages /// max num of sampled images allowed in all stages in a descriptor set 2120d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDescriptorSetStorageImages /// max num of storage images allowed in all stages in a descriptor set 2121e1b12783fff0b8e2defcc94c54fac8d737e6b996Jesse Hall u32 maxDescriptorSetInputAttachments 2122d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// vertex stage limits 2123d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxVertexInputAttributes /// max num of vertex input attribute slots 21245ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 maxVertexInputBindings /// max num of vertex input binding slots 2125d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxVertexInputAttributeOffset /// max vertex input attribute offset added to vertex buffer offset 2126d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxVertexInputBindingStride /// max vertex input binding stride 2127d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxVertexOutputComponents /// max num of output components written by vertex shader 2128d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// tessellation control stage limits 21293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 maxTessellationGenerationLevel /// max level supported by tess primitive generator 2130ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationPatchSize /// max patch size (vertices) 2131ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationControlPerVertexInputComponents /// max num of input components per-vertex in TCS 2132ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS 2133ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationControlPerPatchOutputComponents /// max num of output components per-patch in TCS 2134ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationControlTotalOutputComponents /// max total num of per-vertex and per-patch output components in TCS 2135ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationEvaluationInputComponents /// max num of input components per vertex in TES 2136ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationEvaluationOutputComponents /// max num of output components per vertex in TES 2137d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// geometry stage limits 2138d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxGeometryShaderInvocations /// max invocation count supported in geometry shader 2139d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxGeometryInputComponents /// max num of input components read in geometry stage 2140d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxGeometryOutputComponents /// max num of output components written in geometry stage 2141d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxGeometryOutputVertices /// max num of vertices that can be emitted in geometry stage 2142d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxGeometryTotalOutputComponents /// max total num of components (all vertices) written in geometry stage 2143d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// fragment stage limits 2144d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxFragmentInputComponents /// max num of input compontents read in fragment stage 2145fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall u32 maxFragmentOutputAttachments /// max num of output attachments written in fragment stage 21463fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 maxFragmentDualSrcAttachments /// max num of output attachments written when using dual source blending 2147d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxFragmentCombinedOutputResources /// max total num of storage buffers, storage images and output buffers 2148d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// compute stage limits 2149d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxComputeSharedMemorySize /// max total storage size of work group local storage (bytes) 2150d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32[3] maxComputeWorkGroupCount /// max num of compute work groups that may be dispatched by a single command (x,y,z) 2151d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxComputeWorkGroupInvocations /// max total compute invocations in a single local work group 2152d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32[3] maxComputeWorkGroupSize /// max local size of a compute work group (x,y,z) 2153d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2154d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 subPixelPrecisionBits /// num bits of subpixel precision in screen x and y 2155d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 subTexelPrecisionBits /// num bits of subtexel precision 2156d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 mipmapPrecisionBits /// num bits of mipmap precision 2157d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2158d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDrawIndexedIndexValue /// max index value for indexed draw calls (for 32-bit indices) 2159d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDrawIndirectInstanceCount /// max instance count for indirect draw calls 2160d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2161d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 maxSamplerLodBias /// max absolute sampler level of detail bias 2162d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 maxSamplerAnisotropy /// max degree of sampler anisotropy 2163d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2164d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxViewports /// max number of active viewports 2165d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32[2] maxViewportDimensions /// max viewport dimensions (x,y) 2166d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32[2] viewportBoundsRange /// viewport bounds range (min,max) 2167d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 viewportSubPixelBits /// num bits of subpixel precision for viewport 2168d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2169dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall platform.size_t minMemoryMapAlignment /// min required alignment of pointers returned by MapMemory (bytes) 2170dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkDeviceSize minTexelBufferOffsetAlignment /// min required alignment for texel buffer offsets (bytes) 2171dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkDeviceSize minUniformBufferOffsetAlignment /// min required alignment for uniform buffer sizes and offsets (bytes) 2172dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkDeviceSize minStorageBufferOffsetAlignment /// min required alignment for storage buffer offsets (bytes) 2173d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2174fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall s32 minTexelOffset /// min texel offset for OpTextureSampleOffset 2175d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxTexelOffset /// max texel offset for OpTextureSampleOffset 2176fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall s32 minTexelGatherOffset /// min texel offset for OpTextureGatherOffset 2177d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxTexelGatherOffset /// max texel offset for OpTextureGatherOffset 2178d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 minInterpolationOffset /// furthest negative offset for interpolateAtOffset 2179d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 maxInterpolationOffset /// furthest positive offset for interpolateAtOffset 2180d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 subPixelInterpolationOffsetBits /// num of subpixel bits for interpolateAtOffset 2181d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2182d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxFramebufferWidth /// max width for a framebuffer 2183d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxFramebufferHeight /// max height for a framebuffer 2184d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxFramebufferLayers /// max layer count for a layered framebuffer 2185091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags framebufferColorSampleCounts 2186091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags framebufferDepthSampleCounts 2187091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags framebufferStencilSampleCounts 2188091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags framebufferNoAttachmentSampleCounts 2189d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxColorAttachments /// max num of framebuffer color attachments 2190d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2191091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags sampledImageColorSampleCounts 2192091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags sampledImageIntegerSampleCounts 2193091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags sampledImageDepthSampleCounts 2194091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags sampledImageStencilSampleCounts 2195091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags storageImageSampleCounts 2196d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxSampleMaskWords /// max num of sample mask words 2197d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2198a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall f32 timestampPeriod 2199d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2200d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxClipDistances /// max number of clip distances 2201d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxCullDistances /// max number of cull distances 2202d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxCombinedClipAndCullDistances /// max combined number of user clipping 2203d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2204fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall u32 discreteQueuePriorities 2205fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall 22065ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32[2] pointSizeRange /// range (min,max) of supported point sizes 22075ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32[2] lineWidthRange /// range (min,max) of supported line widths 2208d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 pointSizeGranularity /// granularity of supported point sizes 2209d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 lineWidthGranularity /// granularity of supported line widths 221003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkBool32 strictLines 2211091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkBool32 standardSampleLocations 2212a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall 221365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkDeviceSize optimalBufferCopyOffsetAlignment 221465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkDeviceSize optimalBufferCopyRowPitchAlignment 2215d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2216d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 22175ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallclass VkPhysicalDeviceSparseProperties { 22185ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 residencyStandard2DBlockShape /// Sparse resources support: GPU will access all 2D (single sample) sparse resources using the standard block shapes (based on pixel format) 2219b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkBool32 residencyStandard2DMultisampleBlockShape /// Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard block shapes (based on pixel format) 22205ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 residencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format) 22215ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 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 22225ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 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 22235ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 22245ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 2225d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSemaphoreCreateInfo { 2226d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO 2227d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2228d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSemaphoreCreateFlags flags /// Semaphore creation flags 2229d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2230d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2231d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkQueryPoolCreateInfo { 2232d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO 2233d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2234a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkQueryPoolCreateFlags flags 2235d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryType queryType 223665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 entryCount 2237d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPipelineStatisticFlags pipelineStatistics /// Optional 2238d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2239d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2240d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkFramebufferCreateInfo { 2241d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO 2242d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2243a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkFramebufferCreateFlags flags 2244d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRenderPass renderPass 2245d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 attachmentCount 22465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkImageView* pAttachments 2247d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 width 2248d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 height 2249d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 layers 2250d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2251d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 22523fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkDrawIndirectCommand { 2253d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 vertexCount 2254d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 instanceCount 2255d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 firstVertex 2256d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 firstInstance 2257d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2258d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 22593fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkDrawIndexedIndirectCommand { 2260d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 indexCount 2261d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 instanceCount 2262d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 firstIndex 2263d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 vertexOffset 2264d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 firstInstance 2265d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2266d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 22673fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkDispatchIndirectCommand { 2268d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 x 2269d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 y 2270d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 z 2271d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2272d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 22733e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 2274b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hallclass VkSurfaceCapabilitiesKHR { 22751356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 minImageCount 22761356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 maxImageCount 22771356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D currentExtent 22781356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D minImageExtent 22791356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D maxImageExtent 22801356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceTransformFlagsKHR supportedTransforms 22811356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceTransformKHR currentTransform 2282a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkCompositeAlphaFlagsKHR supportedCompositeAlpha 22831356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 maxImageArraySize 22841356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkImageUsageFlags supportedUsageFlags 228588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 228688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 22873e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 22881356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkSurfaceFormatKHR { 22891356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkFormat format 22901356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkColorSpaceKHR colorSpace 229188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 229288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 22933e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 22941356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkSwapchainCreateInfoKHR { 22951356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkStructureType sType 22961356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const void* pNext 22971356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR surface 22981356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 minImageCount 22991356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkFormat imageFormat 23001356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkColorSpaceKHR imageColorSpace 23011356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D imageExtent 23021356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkImageUsageFlags imageUsageFlags 23031356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceTransformKHR preTransform 2304a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkCompositeAlphaFlagBitsKHR compositeAlpha 23051356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 imageArraySize 23061356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSharingMode sharingMode 230703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 queueFamilyIndexCount 23081356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const u32* pQueueFamilyIndices 23091356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPresentModeKHR presentMode 23101356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSwapchainKHR oldSwapchain 23111356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkBool32 clipped 231288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 231388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 23143e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 23151356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkPresentInfoKHR { 23161356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkStructureType sType 23171356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const void* pNext 2318b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 waitSemaphoreCount 2319b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall const VkSemaphore* pWaitSemaphores 23201356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 swapchainCount 232103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall const VkSwapchainKHR* pSwapchains 23221356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const u32* imageIndices 2323e1b12783fff0b8e2defcc94c54fac8d737e6b996Jesse Hall VkResult* pResults 23241356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 23251356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 23263e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 23271356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkDisplayPropertiesKHR { 23281356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayKHR display 23291356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const char* displayName 23301356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D physicalDimensions 23311356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D physicalResolution 23321356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceTransformFlagsKHR supportedTransforms 23331356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkBool32 planeReorderPossible 2334a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkBool32 persistentContent 23351356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 23361356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 23373e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 2338a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkDisplayModeParametersKHR { 23391356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D visibleRegion 2340a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 refreshRate 23411356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 23421356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 23433e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 23441356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkDisplayModePropertiesKHR { 23451356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayModeKHR displayMode 2346a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDisplayModeParametersKHR parameters 23471356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 23481356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 23493e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 23501356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkDisplayModeCreateInfoKHR { 23511356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkStructureType sType 23521356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const void* pNext 2353a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDisplayModeParametersKHR parameters 23541356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 23551356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 23563e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 23571356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkDisplayPlanePropertiesKHR { 2358a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDisplayKHR currentDisplay 2359a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 currentStackIndex 2360a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 2361a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 23623e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 2363a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkDisplayPlaneCapabilitiesKHR { 23641356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayPlaneAlphaFlagsKHR supportedAlpha 23651356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkOffset2D minSrcPosition 23661356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkOffset2D maxSrcPosition 23671356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D minSrcExtent 23681356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D maxSrcExtent 23691356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkOffset2D minDstPosition 23701356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkOffset2D maxDstPosition 23711356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D minDstExtent 23721356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D maxDstExtent 23731356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 23741356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 23753e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 2376a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkDisplaySurfaceCreateInfoKHR { 23771356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkStructureType sType 23781356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const void* pNext 23791356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayModeKHR displayMode 23801356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 planeIndex 23811356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 planeStackIndex 23821356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceTransformKHR transform 23831356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall f32 globalAlpha 23841356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayPlaneAlphaFlagsKHR alphaMode 23851356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D imageSize 23861356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 23871356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 23883e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display_swapchain") 23891356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkDisplaySwapchainCreateInfoKHR { 23901356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkStructureType sType 23911356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const void* pNext 23921356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const VkSwapchainCreateInfoKHR* pNextSwapchainCreateInfo 23931356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 23941356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 23953e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display_swapchain") 23961356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkDisplayPresentInfoKHR { 23971356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkStructureType sType 23981356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const void* pNext 23991356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkRect2D srcRect 24001356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkRect2D dstRect 2401a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkBool32 persistent 240288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 2403d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 24041356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 2405d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall//////////////// 2406d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Commands // 2407d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall//////////////// 2408d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2409d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Function pointers. TODO: add support for function pointers. 2410d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2411d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@external type void* PFN_vkVoidFunction 2412d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@pfn cmd void vkVoidFunction() { 2413d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2414d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 24153fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@external type void* PFN_vkAllocationFunction 24163fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@pfn cmd void* vkAllocationFunction( 2417d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall void* pUserData, 2418d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall platform.size_t size, 2419d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall platform.size_t alignment, 24203fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkSystemAllocationScope allocationScope) { 242103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall return ? 242203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall} 242303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall 24243fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@external type void* PFN_vkReallocationFunction 24253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@pfn cmd void* vkReallocationFunction( 242603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall void* pUserData, 242703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall void* pOriginal, 242803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall platform.size_t size, 242903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall platform.size_t alignment, 24303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkSystemAllocationScope allocationScope) { 2431d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2432d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2433d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2434d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@external type void* PFN_vkFreeFunction 2435d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@pfn cmd void vkFreeFunction( 2436d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall void* pUserData, 24373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall void* pMemory) { 2438d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2439d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 24403fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@external type void* PFN_vkInternalAllocationNotification 24413fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@pfn cmd void vkInternalAllocationNotification( 244203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall void* pUserData, 244303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall platform.size_t size, 24443fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkInternalAllocationType allocationType, 24453fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkSystemAllocationScope allocationScope) { 244603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall} 244703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall 244803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall@external type void* PFN_vkInternalFreeNotification 244903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall@pfn cmd void vkInternalFreeNotification( 245003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall void* pUserData, 245103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall platform.size_t size, 24523fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkInternalAllocationType allocationType, 24533fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkSystemAllocationScope allocationScope) { 245403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall} 2455d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2456d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Global functions 2457d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2458d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 2459d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateInstance( 2460d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkInstanceCreateInfo* pCreateInfo, 24613fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 2462d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkInstance* pInstance) { 2463d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO) 2464d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2465d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall instance := ? 2466d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pInstance[0] = instance 2467d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Instances[instance] = new!InstanceObject() 2468d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 246903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerNameCount] 247003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionNameCount] 2471d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2472d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2473d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2474d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2475d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 24765ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyInstance( 247703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkInstance instance, 24783fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 2479d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall instanceObject := GetInstance(instance) 2480d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2481d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Instances[instance] = null 2482d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2483d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2484d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 2485d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkEnumeratePhysicalDevices( 2486d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkInstance instance, 2487d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32* pPhysicalDeviceCount, 2488d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice* pPhysicalDevices) { 2489d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall instanceObject := GetInstance(instance) 2490d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2491d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceCount := as!u32(?) 2492d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pPhysicalDeviceCount[0] = physicalDeviceCount 2493d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDevices := pPhysicalDevices[0:physicalDeviceCount] 2494d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2495d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. physicalDeviceCount) { 2496d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDevice := ? 2497d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDevices[i] = physicalDevice 2498d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall if !(physicalDevice in State.PhysicalDevices) { 2499d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance) 2500d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2501d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2502d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2503d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2504d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2505d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2506d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd PFN_vkVoidFunction vkGetDeviceProcAddr( 2507d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 2508d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* pName) { 25095ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall if device != NULL_HANDLE { 2510d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall device := GetDevice(device) 2511d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2512d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2513d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2514d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2515d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2516d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd PFN_vkVoidFunction vkGetInstanceProcAddr( 2517d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkInstance instance, 2518d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* pName) { 25195ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall if instance != NULL_HANDLE { 2520d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall instanceObject := GetInstance(instance) 2521d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2522d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2523d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2524d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2525d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2526606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetPhysicalDeviceProperties( 2527d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2528d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDeviceProperties* pProperties) { 2529d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2530d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2531d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties := ? 2532d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pProperties[0] = properties 2533d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2534d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2535606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetPhysicalDeviceQueueFamilyProperties( 2536d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 253703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pQueueFamilyPropertyCount, 25385ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkQueueFamilyProperties* pQueueFamilyProperties) { 2539d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 25405ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // TODO: Figure out how to express fetch-count-or-properties 25415ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // This version fails 'apic validate' with 'fence not allowed in 25425ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // *semantic.Branch'. Other attempts have failed with the same or other 25435ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // errors. 25445ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // if pQueueFamilyProperties != null { 25455ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // queuesProperties := pQueueFamilyProperties[0:pCount[0]] 25465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // for i in (0 .. pCount[0]) { 25475ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // queueProperties := as!VkQueueFamilyProperties(?) 25485ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // queuesProperties[i] = queueProperties 25495ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // } 25505ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // } else { 25515ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // count := ? 25525ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // pCount[0] = count 25535ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // } 2554d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2555d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2556606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetPhysicalDeviceMemoryProperties( 2557d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2558d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDeviceMemoryProperties* pMemoryProperties) { 2559d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2560d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2561d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall memoryProperties := ? 2562d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pMemoryProperties[0] = memoryProperties 2563d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2564d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2565606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetPhysicalDeviceFeatures( 2566d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2567d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDeviceFeatures* pFeatures) { 2568d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2569d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2570d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall features := ? 2571d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pFeatures[0] = features 2572d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2573d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2574606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetPhysicalDeviceFormatProperties( 2575d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2576d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format, 2577d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormatProperties* pFormatProperties) { 2578d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2579d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2580d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall formatProperties := ? 2581d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pFormatProperties[0] = formatProperties 2582d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2583d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2584a9e5703e380d9d7f096d177adb792621a1e8d4baJesse Hallcmd VkResult vkGetPhysicalDeviceImageFormatProperties( 2585d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2586d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format, 2587d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageType type, 2588d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageTiling tiling, 2589d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageUsageFlags usage, 25905ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkImageCreateFlags flags, 2591d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageFormatProperties* pImageFormatProperties) { 2592d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2593d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2594d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageFormatProperties := ? 2595d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pImageFormatProperties[0] = imageFormatProperties 2596a9e5703e380d9d7f096d177adb792621a1e8d4baJesse Hall 2597a9e5703e380d9d7f096d177adb792621a1e8d4baJesse Hall return ? 2598d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2599d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2600d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2601d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Device functions 2602d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2603d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 2604d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateDevice( 2605d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2606d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkDeviceCreateInfo* pCreateInfo, 26073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 2608d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice* pDevice) { 2609d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO) 2610d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2611d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2612d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall device := ? 2613d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pDevice[0] = device 2614d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Devices[device] = new!DeviceObject(physicalDevice: physicalDevice) 2615d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2616d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2617d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2618d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2619d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 26205ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyDevice( 262103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkDevice device, 26223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 2623d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2624d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2625d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Devices[device] = null 2626d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2627d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2628d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2629d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Extension discovery functions 2630d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 26315ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd VkResult vkEnumerateInstanceLayerProperties( 263203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 2633d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkLayerProperties* pProperties) { 2634d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall count := as!u32(?) 263503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pPropertyCount[0] = count 2636d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2637d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties := pProperties[0:count] 2638d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. count) { 2639d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall property := ? 2640d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties[i] = property 2641d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2642d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2643d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2644d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2645d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 26465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd VkResult vkEnumerateInstanceExtensionProperties( 2647d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* pLayerName, 264803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 2649d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtensionProperties* pProperties) { 2650d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall count := as!u32(?) 265103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pPropertyCount[0] = count 2652d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2653d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties := pProperties[0:count] 2654d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. count) { 2655d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall property := ? 2656d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties[i] = property 2657d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2658d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2659d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2660d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2661d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 26625ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd VkResult vkEnumerateDeviceLayerProperties( 2663d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 266403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 2665d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkLayerProperties* pProperties) { 2666d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2667d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall count := as!u32(?) 266803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pPropertyCount[0] = count 2669d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2670d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties := pProperties[0:count] 2671d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. count) { 2672d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall property := ? 2673d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties[i] = property 2674d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2675d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2676d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2677d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2678d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 26795ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd VkResult vkEnumerateDeviceExtensionProperties( 2680d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2681d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* pLayerName, 268203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 2683d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtensionProperties* pProperties) { 2684d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2685d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2686d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall count := as!u32(?) 268703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pPropertyCount[0] = count 2688d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2689d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties := pProperties[0:count] 2690d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. count) { 2691d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall property := ? 2692d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties[i] = property 2693d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2694d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2695d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2696d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2697d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2698d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2699d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Queue functions 2700d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2701d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 2702606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetDeviceQueue( 2703d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 2704d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queueFamilyIndex, 2705d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queueIndex, 2706d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueue* pQueue) { 2707d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2708d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2709d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queue := ? 2710d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pQueue[0] = queue 2711d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2712d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall if !(queue in State.Queues) { 2713d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Queues[queue] = new!QueueObject(device: device) 2714d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2715d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2716d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2717d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 2718d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkQueueSubmit( 2719d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueue queue, 2720a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall u32 submitCount, 2721b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall const VkSubmitInfo* pSubmits, 2722d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFence fence) { 2723d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queueObject := GetQueue(queue) 2724d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 27255ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall if fence != NULL_HANDLE { 2726d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fenceObject := GetFence(fence) 2727d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(fenceObject.device == queueObject.device) 2728d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2729d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 27303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // commandBuffers := pcommandBuffers[0:commandBufferCount] 27313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // for i in (0 .. commandBufferCount) { 27323fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // commandBuffer := commandBuffers[i] 27333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // commandBufferObject := GetCommandBuffer(commandBuffer) 27343fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // assert(commandBufferObject.device == queueObject.device) 2735a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall // 27363fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags, 27373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.") 2738a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall // } 2739d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2740d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2741d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2742d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2743d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 2744d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkQueueWaitIdle( 2745d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueue queue) { 2746d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queueObject := GetQueue(queue) 2747d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2748d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2749d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2750d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2751d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 2752d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkDeviceWaitIdle( 2753d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device) { 2754d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2755d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2756d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2757d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2758d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2759d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2760d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Memory functions 2761d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2762d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 27633fbc856120217247c72fb5ed88500000f3881c45Jesse Hallcmd VkResult vkAllocateMemory( 2764d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 27653fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkMemoryAllocateInfo* pAllocateInfo, 27663fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 27673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory* pMemory) { 27683fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO) 2769d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2770d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 27713fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memory := ? 27723fbc856120217247c72fb5ed88500000f3881c45Jesse Hall pMemory[0] = memory 27733fbc856120217247c72fb5ed88500000f3881c45Jesse Hall State.DeviceMemories[memory] = new!DeviceMemoryObject( 2774d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall device: device, 27753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall allocationSize: pAllocateInfo[0].allocationSize) 2776d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2777d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2778d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2779d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2780d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 27815ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkFreeMemory( 2782d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 27833fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory, 27843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 2785d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 27863fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 27873fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 2788d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2789d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Check that no objects are still bound before freeing. 27903fbc856120217247c72fb5ed88500000f3881c45Jesse Hall validate("MemoryCheck", len(memoryObject.boundObjects) == 0, 2791d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall "vkFreeMemory: objects still bound") 27923fbc856120217247c72fb5ed88500000f3881c45Jesse Hall validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0, 27933fbc856120217247c72fb5ed88500000f3881c45Jesse Hall "vkFreeMemory: commandBuffers still bound") 27943fbc856120217247c72fb5ed88500000f3881c45Jesse Hall State.DeviceMemories[memory] = null 2795d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2796d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2797d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 2798d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkMapMemory( 2799d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 28003fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory, 28015ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset, 28025ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size, 2803d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryMapFlags flags, 2804d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall void** ppData) { 2805d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 28063fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 28073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 2808d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2809d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(flags == as!VkMemoryMapFlags(0)) 28103fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert((offset + size) <= memoryObject.allocationSize) 2811d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2812d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2813d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2814d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2815d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 28165ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkUnmapMemory( 2817d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 28183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory) { 2819d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 28203fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 28213fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 2822d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2823d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2824d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkFlushMappedMemoryRanges( 2825d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 28263fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 memoryRangeCount 28273fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkMappedMemoryRange* pMemoryRanges) { 2828d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2829d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 28303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryRanges := pMemoryRanges[0:memoryRangeCount] 28313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall for i in (0 .. memoryRangeCount) { 28323fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryRange := memoryRanges[i] 28333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memoryRange.memory) 28343fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 28353fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize) 2836d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2837d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2838d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2839d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2840d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2841d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkInvalidateMappedMemoryRanges( 2842d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 28433fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 memoryRangeCount, 28443fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkMappedMemoryRange* pMemoryRanges) { 2845d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2846d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 28473fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryRanges := pMemoryRanges[0:memoryRangeCount] 28483fbc856120217247c72fb5ed88500000f3881c45Jesse Hall for i in (0 .. memoryRangeCount) { 28493fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryRange := memoryRanges[i] 28503fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memoryRange.memory) 28513fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 28523fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize) 2853d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2854d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2855d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2856d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2857d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2858d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2859d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Memory management API functions 2860d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2861606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetDeviceMemoryCommitment( 2862d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 2863d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDeviceMemory memory, 28645ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize* pCommittedMemoryInBytes) { 2865d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2866d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 28675ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall if memory != NULL_HANDLE { 2868d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall memoryObject := GetDeviceMemory(memory) 2869d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(memoryObject.device == device) 2870d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2871d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2872d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall committedMemoryInBytes := ? 2873d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pCommittedMemoryInBytes[0] = committedMemoryInBytes 2874d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2875d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2876606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetBufferMemoryRequirements( 2877d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 2878d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer, 2879d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryRequirements* pMemoryRequirements) { 2880d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2881d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 2882d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(bufferObject.device == device) 2883d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2884d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2885d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkBindBufferMemory( 2886d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 2887d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer, 28883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory, 28893fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize memoryOffset) { 2890d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2891d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 2892d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(bufferObject.device == device) 2893d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2894d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Unbind buffer from previous memory object, if not VK_NULL_HANDLE. 28953fbc856120217247c72fb5ed88500000f3881c45Jesse Hall if bufferObject.memory != NULL_HANDLE { 28963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(bufferObject.memory) 28973fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject.boundObjects[as!u64(buffer)] = null 2898d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2899d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2900d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Bind buffer to given memory object, if not VK_NULL_HANDLE. 29013fbc856120217247c72fb5ed88500000f3881c45Jesse Hall if memory != NULL_HANDLE { 29023fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 29033fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 29043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject.boundObjects[as!u64(buffer)] = memoryOffset 2905d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 29063fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bufferObject.memory = memory 29073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bufferObject.memoryOffset = memoryOffset 2908d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2909d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2910d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2911d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2912606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetImageMemoryRequirements( 2913d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 2914d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image, 2915d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryRequirements* pMemoryRequirements) { 2916d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2917d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 2918d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageObject.device == device) 2919d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2920d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2921d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkBindImageMemory( 2922d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 2923d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image, 29243fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory, 29253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize memoryOffset) { 2926d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2927d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 2928d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageObject.device == device) 2929d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2930d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Unbind image from previous memory object, if not VK_NULL_HANDLE. 29313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall if imageObject.memory != NULL_HANDLE { 29323fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(imageObject.memory) 29333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject.boundObjects[as!u64(image)] = null 2934d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2935d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2936d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Bind image to given memory object, if not VK_NULL_HANDLE. 29373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall if memory != NULL_HANDLE { 29383fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 29393fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 29403fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject.boundObjects[as!u64(image)] = memoryOffset 2941d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 29423fbc856120217247c72fb5ed88500000f3881c45Jesse Hall imageObject.memory = memory 29433fbc856120217247c72fb5ed88500000f3881c45Jesse Hall imageObject.memoryOffset = memoryOffset 2944d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2945d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2946d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2947d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2948606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetImageSparseMemoryRequirements( 2949d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 2950d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image, 295103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pSparseMemoryRequirementCount, 2952d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSparseImageMemoryRequirements* pSparseMemoryRequirements) { 2953d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2954d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 2955d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageObject.device == device) 2956d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2957d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2958606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetPhysicalDeviceSparseImageFormatProperties( 2959d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2960d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format, 2961d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageType type, 2962091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlagBits samples, 2963d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageUsageFlags usage, 2964d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageTiling tiling, 296503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 2966d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSparseImageFormatProperties* pProperties) { 2967d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2968d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2969d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2970a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkQueueBindSparse( 2971d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueue queue, 297203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 bindInfoCount, 2973a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkBindSparseInfo* pBindInfo, 2974a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkFence fence) { 2975d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queueObject := GetQueue(queue) 2976d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2977d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2978d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2979d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2980d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2981d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Fence functions 2982d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2983d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 2984d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateFence( 2985d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 2986d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkFenceCreateInfo* pCreateInfo, 29873fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 2988d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFence* pFence) { 2989d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO) 2990d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2991d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2992d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fence := ? 2993d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pFence[0] = fence 2994d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Fences[fence] = new!FenceObject( 2995d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hall device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT))) 2996d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2997d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2998d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2999d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3000d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 30015ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyFence( 3002d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 300303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkFence fence, 30043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3005d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3006d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fenceObject := GetFence(fence) 3007d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(fenceObject.device == device) 3008d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3009d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Fences[fence] = null 3010d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3011d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3012d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3013d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkResetFences( 3014d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3015d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 fenceCount, 3016d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkFence* pFences) { 3017d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3018d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3019d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fences := pFences[0:fenceCount] 3020d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. fenceCount) { 3021d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fence := fences[i] 3022d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fenceObject := GetFence(fence) 3023d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(fenceObject.device == device) 3024d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fenceObject.signaled = false 3025d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3026d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3027d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3028d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3029d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3030d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3031d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkGetFenceStatus( 3032d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3033d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFence fence) { 3034d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3035d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fenceObject := GetFence(fence) 3036d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(fenceObject.device == device) 3037d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3038d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3039d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3040d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3041d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3042d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkWaitForFences( 3043d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3044d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 fenceCount, 3045d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkFence* pFences, 30465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 waitAll, 3047d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u64 timeout) { /// timeout in nanoseconds 3048d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3049d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3050d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fences := pFences[0:fenceCount] 3051d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. fenceCount) { 3052d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fence := fences[i] 3053d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fenceObject := GetFence(fence) 3054d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(fenceObject.device == device) 3055d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3056d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3057d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3058d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3059d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3060d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3061d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Queue semaphore functions 3062d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3063d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3064d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateSemaphore( 3065d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3066d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkSemaphoreCreateInfo* pCreateInfo, 30673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3068d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSemaphore* pSemaphore) { 3069d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO) 3070d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3071d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3072d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall semaphore := ? 3073d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pSemaphore[0] = semaphore 3074d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Semaphores[semaphore] = new!SemaphoreObject(device: device) 3075d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3076d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3077d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3078d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3079d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 30805ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroySemaphore( 3081d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 308203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkSemaphore semaphore, 30833fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3084d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3085d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall semaphoreObject := GetSemaphore(semaphore) 3086d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(semaphoreObject.device == device) 3087d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3088d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Semaphores[semaphore] = null 3089d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3090d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3091d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3092d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Event functions 3093d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3094d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3095d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateEvent( 3096d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3097d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkEventCreateInfo* pCreateInfo, 30983fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3099d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEvent* pEvent) { 3100d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO) 3101d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3102d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3103d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall event := ? 3104d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pEvent[0] = event 3105d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Events[event] = new!EventObject(device: device) 3106d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3107d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3108d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3109d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3110d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 31115ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyEvent( 3112d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 311303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkEvent event, 31143fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3115d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3116d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 3117d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(eventObject.device == device) 3118d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3119d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Events[event] = null 3120d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3121d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3122d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3123d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkGetEventStatus( 3124d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3125d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEvent event) { 3126d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3127d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 3128d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(eventObject.device == device) 3129d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3130d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3131d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3132d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3133d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3134d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkSetEvent( 3135d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3136d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEvent event) { 3137d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3138d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 3139d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(eventObject.device == device) 3140d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3141d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3142d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3143d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3144d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3145d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkResetEvent( 3146d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3147d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEvent event) { 3148d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3149d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 3150d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(eventObject.device == device) 3151d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3152d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3153d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3154d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3155d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3156d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Query functions 3157d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3158d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3159d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateQueryPool( 3160d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3161d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkQueryPoolCreateInfo* pCreateInfo, 31623fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3163d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPool* pQueryPool) { 3164d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO) 3165d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3166d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3167d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPool := ? 3168d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pQueryPool[0] = queryPool 3169d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.QueryPools[queryPool] = new!QueryPoolObject(device: device) 3170d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3171d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3172d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3173d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3174d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 31755ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyQueryPool( 3176d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 317703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkQueryPool queryPool, 31783fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3179d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3180d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPoolObject := GetQueryPool(queryPool) 3181d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(queryPoolObject.device == device) 3182d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3183d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.QueryPools[queryPool] = null 3184d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3185d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3186d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3187d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkGetQueryPoolResults( 3188d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3189d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPool queryPool, 3190d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 startQuery, 3191d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queryCount, 3192a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall platform.size_t dataSize, 3193d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall void* pData, 3194a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall VkDeviceSize stride, 3195d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryResultFlags flags) { 3196d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3197d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPoolObject := GetQueryPool(queryPool) 3198d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(queryPoolObject.device == device) 3199d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3200d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall data := pData[0:dataSize] 3201d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3202d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3203d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3204d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3205d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Buffer functions 3206d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3207d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3208d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateBuffer( 3209d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3210d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkBufferCreateInfo* pCreateInfo, 32113fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3212d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer* pBuffer) { 3213d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO) 3214d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3215d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3216d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall buffer := ? 3217d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pBuffer[0] = buffer 3218d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Buffers[buffer] = new!BufferObject(device: device) 3219d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3220d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3221d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3222d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3223d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 32245ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyBuffer( 3225d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 322603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkBuffer buffer, 32273fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3228d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3229d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 3230d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(bufferObject.device == device) 3231d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 32323fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(bufferObject.memory == 0) 3233d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Buffers[buffer] = null 3234d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3235d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3236d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3237d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Buffer view functions 3238d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3239d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3240d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateBufferView( 3241d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3242d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkBufferViewCreateInfo* pCreateInfo, 32433fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3244d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBufferView* pView) { 3245d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO) 3246d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3247d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3248d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(pCreateInfo.buffer) 3249d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(bufferObject.device == device) 3250d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3251d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall view := ? 3252d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pView[0] = view 3253d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.BufferViews[view] = new!BufferViewObject(device: device, buffer: pCreateInfo.buffer) 3254d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3255d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3256d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3257d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3258d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 32595ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyBufferView( 3260d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 326103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkBufferView bufferView, 32623fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3263d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3264d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferViewObject := GetBufferView(bufferView) 3265d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(bufferViewObject.device == device) 3266d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3267d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.BufferViews[bufferView] = null 3268d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3269d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3270d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3271d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Image functions 3272d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3273d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3274d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateImage( 3275d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3276d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageCreateInfo* pCreateInfo, 32773fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3278d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage* pImage) { 3279d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO) 3280d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3281d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3282d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall image := ? 3283d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pImage[0] = image 3284d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Images[image] = new!ImageObject(device: device) 3285d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3286d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3287d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3288d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3289d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 32905ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyImage( 3291d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 329203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkImage image, 32933fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3294d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3295d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 3296d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageObject.device == device) 3297d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 32983fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(imageObject.memory == 0) 3299d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Images[image] = null 3300d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3301d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3302606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetImageSubresourceLayout( 3303d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3304d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image, 3305d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageSubresource* pSubresource, 3306d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSubresourceLayout* pLayout) { 3307d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3308d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 3309d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageObject.device == device) 3310d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3311d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3312d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3313d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Image view functions 3314d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3315d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3316d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateImageView( 3317d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3318d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageViewCreateInfo* pCreateInfo, 33193fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3320d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageView* pView) { 3321d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO) 3322d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3323d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3324d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(pCreateInfo.image) 3325d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageObject.device == device) 3326d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3327d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall view := ? 3328d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pView[0] = view 3329d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.ImageViews[view] = new!ImageViewObject(device: device, image: pCreateInfo.image) 3330d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3331d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3332d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3333d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3334d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 33355ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyImageView( 3336d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 333703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkImageView imageView, 33383fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3339d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3340d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageViewObject := GetImageView(imageView) 3341d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageViewObject.device == device) 3342d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3343d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.ImageViews[imageView] = null 3344d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3345d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3346d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3347d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Shader functions 3348d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3349d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateShaderModule( 3350d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3351d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkShaderModuleCreateInfo* pCreateInfo, 33523fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3353d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkShaderModule* pShaderModule) { 3354d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO) 3355d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3356d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3357d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall shaderModule := ? 3358d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pShaderModule[0] = shaderModule 3359d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.ShaderModules[shaderModule] = new!ShaderModuleObject(device: device) 3360d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3361d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3362d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3363d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 33645ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyShaderModule( 3365d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 336603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkShaderModule shaderModule, 33673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3368d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3369d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall shaderModuleObject := GetShaderModule(shaderModule) 3370d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(shaderModuleObject.device == device) 3371d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3372d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.ShaderModules[shaderModule] = null 3373d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3374d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3375d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3376d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Pipeline functions 3377d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3378d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreatePipelineCache( 3379d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3380d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineCacheCreateInfo* pCreateInfo, 33813fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3382d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineCache* pPipelineCache) { 3383d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO) 3384d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3385d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3386d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineCache := ? 3387d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pPipelineCache[0] = pipelineCache 3388d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.PipelineCaches[pipelineCache] = new!PipelineCacheObject(device: device) 3389d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3390d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3391d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3392d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 33935ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyPipelineCache( 3394d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 339503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkPipelineCache pipelineCache, 33963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3397d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3398d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineCacheObject := GetPipelineCache(pipelineCache) 3399d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineCacheObject.device == device) 3400d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3401d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.PipelineCaches[pipelineCache] = null 3402d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3403d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3404d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkGetPipelineCacheData( 3405d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3406d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineCache pipelineCache, 3407a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall platform.size_t* pDataSize, 3408d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall void* pData) { 3409d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3410d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineCacheObject := GetPipelineCache(pipelineCache) 3411d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineCacheObject.device == device) 3412d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3413d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3414d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3415d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3416d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkMergePipelineCaches( 3417d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 34183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkPipelineCache dstCache, 3419d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 srcCacheCount, 3420d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineCache* pSrcCaches) { 3421d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 34223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstCacheObject := GetPipelineCache(dstCache) 34233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(dstCacheObject.device == device) 3424d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3425d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcCaches := pSrcCaches[0:srcCacheCount] 3426d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. srcCacheCount) { 3427d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcCache := srcCaches[i] 3428d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcCacheObject := GetPipelineCache(srcCache) 3429d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(srcCacheObject.device == device) 3430d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3431d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3432d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3433d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3434d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3435d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateGraphicsPipelines( 3436d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3437d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineCache pipelineCache, 343803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 createInfoCount, 3439d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkGraphicsPipelineCreateInfo* pCreateInfos, 34403fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3441d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipeline* pPipelines) { 3442d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 34435ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall if pipelineCache != NULL_HANDLE { 3444d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineCacheObject := GetPipelineCache(pipelineCache) 3445d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineCacheObject.device == device) 3446d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3447d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 344803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall createInfos := pCreateInfos[0:createInfoCount] 344903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pipelines := pPipelines[0:createInfoCount] 345003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. createInfoCount) { 3451d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipeline := ? 3452d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelines[i] = pipeline 3453d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Pipelines[pipeline] = new!PipelineObject(device: device) 3454d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3455d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3456d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3457d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3458d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3459d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateComputePipelines( 3460d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3461d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineCache pipelineCache, 346203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 createInfoCount, 3463d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkComputePipelineCreateInfo* pCreateInfos, 34643fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3465d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipeline* pPipelines) { 3466d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 34675ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall if pipelineCache != NULL_HANDLE { 3468d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineCacheObject := GetPipelineCache(pipelineCache) 3469d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineCacheObject.device == device) 3470d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3471d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 347203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall createInfos := pCreateInfos[0:createInfoCount] 347303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pipelines := pPipelines[0:createInfoCount] 347403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. createInfoCount) { 3475d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipeline := ? 3476d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelines[i] = pipeline 3477d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Pipelines[pipeline] = new!PipelineObject(device: device) 3478d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3479d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3480d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3481d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3482d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3483d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 34845ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyPipeline( 3485d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 348603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkPipeline pipeline, 34873fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3488d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3489d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineObjects := GetPipeline(pipeline) 3490d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineObjects.device == device) 3491d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3492d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Pipelines[pipeline] = null 3493d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3494d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3495d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3496d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Pipeline layout functions 3497d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3498d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3499d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreatePipelineLayout( 3500d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3501d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineLayoutCreateInfo* pCreateInfo, 35023fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3503d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineLayout* pPipelineLayout) { 3504d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO) 3505d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3506d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3507d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineLayout := ? 3508d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pPipelineLayout[0] = pipelineLayout 3509d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.PipelineLayouts[pipelineLayout] = new!PipelineLayoutObject(device: device) 3510d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3511d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3512d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3513d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3514d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 35155ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyPipelineLayout( 3516d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 351703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkPipelineLayout pipelineLayout, 35183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3519d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3520d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineLayoutObjects := GetPipelineLayout(pipelineLayout) 3521d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineLayoutObjects.device == device) 3522d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3523d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.PipelineLayouts[pipelineLayout] = null 3524d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3525d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3526d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3527d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Sampler functions 3528d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3529d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3530d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateSampler( 3531d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3532d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkSamplerCreateInfo* pCreateInfo, 35333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3534d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSampler* pSampler) { 3535d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO) 3536d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3537d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3538d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall sampler := ? 3539d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pSampler[0] = sampler 3540d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Samplers[sampler] = new!SamplerObject(device: device) 3541d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3542d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3543d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3544d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3545d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 35465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroySampler( 3547d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 354803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkSampler sampler, 35493fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3550d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3551d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall samplerObject := GetSampler(sampler) 3552d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(samplerObject.device == device) 3553d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3554d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Samplers[sampler] = null 3555d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3556d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3557d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3558d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Descriptor set functions 3559d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3560d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3561d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateDescriptorSetLayout( 3562d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3563d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkDescriptorSetLayoutCreateInfo* pCreateInfo, 35643fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3565d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDescriptorSetLayout* pSetLayout) { 3566d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO) 3567d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3568d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3569d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall setLayout := ? 3570d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pSetLayout[0] = setLayout 3571d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.DescriptorSetLayouts[setLayout] = new!DescriptorSetLayoutObject(device: device) 3572d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3573d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3574d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3575d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3576d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 35775ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyDescriptorSetLayout( 3578d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 357903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkDescriptorSetLayout descriptorSetLayout, 35803fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3581d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3582d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout) 3583d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorSetLayoutObject.device == device) 3584d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3585d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.DescriptorSetLayouts[descriptorSetLayout] = null 3586d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3587d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3588d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3589d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateDescriptorPool( 3590d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 359103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall const VkDescriptorPoolCreateInfo* pCreateInfo, 35923fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3593d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDescriptorPool* pDescriptorPool) { 3594d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO) 3595d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3596d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3597d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorPool := ? 3598d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pDescriptorPool[0] = descriptorPool 3599d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.DescriptorPools[descriptorPool] = new!DescriptorPoolObject(device: device) 3600d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3601d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3602d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3603d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3604d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 36055ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyDescriptorPool( 3606d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 360703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkDescriptorPool descriptorPool, 36083fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3609d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3610d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorPoolObject := GetDescriptorPool(descriptorPool) 3611d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorPoolObject.device == device) 3612d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3613d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.DescriptorPools[descriptorPool] = null 3614d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3615d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3616d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 3617d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkResetDescriptorPool( 3618d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3619fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkDescriptorPool descriptorPool, 3620fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkDescriptorPoolResetFlags flags) { 3621d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3622d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorPoolObject := GetDescriptorPool(descriptorPool) 3623d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorPoolObject.device == device) 3624d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3625d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3626d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3627d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3628d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 36293fbc856120217247c72fb5ed88500000f3881c45Jesse Hallcmd VkResult vkAllocateDescriptorSets( 3630d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 36313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkDescriptorSetAllocateInfo* pAllocateInfo, 36325ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDescriptorSet* pDescriptorSets) { 3633d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 36343fbc856120217247c72fb5ed88500000f3881c45Jesse Hall allocInfo := pAllocateInfo[0] 3635fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool) 3636d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 363703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount] 363803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. allocInfo.setCount) { 3639d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall setLayout := setLayouts[i] 3640d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall setLayoutObject := GetDescriptorSetLayout(setLayout) 3641d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(setLayoutObject.device == device) 3642d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3643d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 364403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall descriptorSets := pDescriptorSets[0:allocInfo.setCount] 364503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. allocInfo.setCount) { 3646d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorSet := ? 3647d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorSets[i] = descriptorSet 3648d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device) 3649d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3650d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3651d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3652d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3653d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3654f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hallcmd VkResult vkFreeDescriptorSets( 3655f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall VkDevice device, 3656f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall VkDescriptorPool descriptorPool, 365703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 descriptorSetCount, 3658f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall const VkDescriptorSet* pDescriptorSets) { 3659f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall deviceObject := GetDevice(device) 3660f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall descriptorPoolObject := GetDescriptorPool(descriptorPool) 3661f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall 366203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall descriptorSets := pDescriptorSets[0:descriptorSetCount] 366303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. descriptorSetCount) { 3664f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall descriptorSet := descriptorSets[i] 3665f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall descriptorSetObject := GetDescriptorSet(descriptorSet) 3666f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall assert(descriptorSetObject.device == device) 3667f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall State.DescriptorSets[descriptorSet] = null 3668f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall } 3669f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall 3670f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall return ? 3671f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall} 3672f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall 36735ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkUpdateDescriptorSets( 3674d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3675b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 descriptorWriteCount, 3676d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkWriteDescriptorSet* pDescriptorWrites, 3677b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 descriptorCopyCount, 3678d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkCopyDescriptorSet* pDescriptorCopies) { 3679d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3680d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3681b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall descriptorWrites := pDescriptorWrites[0:descriptorWriteCount] 3682b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall for i in (0 .. descriptorWriteCount) { 3683d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorWrite := descriptorWrites[i] 36843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet) 3685d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorWriteObject.device == device) 3686d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3687d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3688b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall descriptorCopies := pDescriptorCopies[0:descriptorCopyCount] 3689b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall for i in (0 .. descriptorCopyCount) { 3690d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorCopy := descriptorCopies[i] 36913fbc856120217247c72fb5ed88500000f3881c45Jesse Hall descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet) 3692d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorCopyObject.device == device) 3693d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3694d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3695d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3696d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3697d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Framebuffer functions 3698d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3699d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3700d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateFramebuffer( 3701d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3702d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkFramebufferCreateInfo* pCreateInfo, 37033fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3704d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFramebuffer* pFramebuffer) { 3705d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO) 3706d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3707d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3708d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall framebuffer := ? 3709d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pFramebuffer[0] = framebuffer 3710d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Framebuffers[framebuffer] = new!FramebufferObject(device: device) 3711d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3712d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3713d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3714d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3715d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 37165ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyFramebuffer( 3717d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 371803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkFramebuffer framebuffer, 37193fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3720d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3721d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall framebufferObject := GetFramebuffer(framebuffer) 3722d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(framebufferObject.device == device) 3723d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3724d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Framebuffers[framebuffer] = null 3725d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3726d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3727d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3728d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Renderpass functions 3729d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3730d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3731d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateRenderPass( 3732d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3733d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkRenderPassCreateInfo* pCreateInfo, 37343fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3735d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRenderPass* pRenderPass) { 3736d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO) 3737d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3738d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3739d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall renderpass := ? 3740d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pRenderPass[0] = renderpass 3741d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.RenderPasses[renderpass] = new!RenderPassObject(device: device) 3742d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3743d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3744d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3745d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3746d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 37475ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyRenderPass( 3748d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 374903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkRenderPass renderPass, 37503fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3751d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3752d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall renderPassObject := GetRenderPass(renderPass) 3753d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(renderPassObject.device == device) 3754d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3755d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.RenderPasses[renderPass] = null 3756d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3757d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3758606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetRenderAreaGranularity( 3759d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3760d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRenderPass renderPass, 3761d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent2D* pGranularity) { 3762d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3763d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall renderPassObject := GetRenderPass(renderPass) 3764d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3765d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall granularity := ? 3766d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pGranularity[0] = granularity 3767d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3768d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3769d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Command pool functions 3770d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3771d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateCommandPool( 3772d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 37733fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkCommandPoolCreateInfo* pCreateInfo, 37743fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 37753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPool* pCommandPool) { 37763fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO) 3777d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3778d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 37793fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandPool := ? 37803fbc856120217247c72fb5ed88500000f3881c45Jesse Hall pCommandPool[0] = commandPool 37813fbc856120217247c72fb5ed88500000f3881c45Jesse Hall State.CommandPools[commandPool] = new!CommandPoolObject(device: device) 3782d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3783d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3784d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3785d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 37865ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyCommandPool( 3787d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 37883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPool commandPool, 37893fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3790d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 37913fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandPoolObject := GetCommandPool(commandPool) 37923fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandPoolObject.device == device) 3793d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 37943fbc856120217247c72fb5ed88500000f3881c45Jesse Hall State.CommandPools[commandPool] = null 3795d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3796d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3797d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkResetCommandPool( 3798d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 37993fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPool commandPool, 38003fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPoolResetFlags flags) { 3801d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 38023fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandPoolObject := GetCommandPool(commandPool) 38033fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandPoolObject.device == device) 3804d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3805d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3806d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3807d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3808d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Command buffer functions 3809d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 38103fbc856120217247c72fb5ed88500000f3881c45Jesse Hallmacro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) { 38113fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 38123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer 3813d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 38143fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 38153fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.boundObjects[as!u64(obj)] = memory 3816d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3817d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 38183fbc856120217247c72fb5ed88500000f3881c45Jesse Hallmacro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) { 38193fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 38203fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject.boundCommandBuffers[commandBuffer] = null 3821d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 38223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 38233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.boundObjects[as!u64(obj)] = null 3824d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3825d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3826d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 38273fbc856120217247c72fb5ed88500000f3881c45Jesse Hallcmd VkResult vkAllocateCommandBuffers( 3828d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 38293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkCommandBufferAllocateInfo* pAllocateInfo, 38303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer* pCommandBuffers) { 38313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO) 3832d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 38333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall count := pAllocateInfo[0].bufferCount 38343fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBuffers := pCommandBuffers[0:count] 3835fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall for i in (0 .. count) { 38363fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBuffer := ? 38373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBuffers[i] = commandBuffer 38383fbc856120217247c72fb5ed88500000f3881c45Jesse Hall State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device) 3839fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall } 3840d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3841d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3842d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3843d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3844d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3845fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hallcmd void vkFreeCommandBuffers( 3846d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 38473fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPool commandPool, 384803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 commandBufferCount, 38493fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkCommandBuffer* pCommandBuffers) { 3850d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3851d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 38523fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBuffers := pCommandBuffers[0:commandBufferCount] 385303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. commandBufferCount) { 38543fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffers[i]) 38553fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == device) 3856fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall // TODO: iterate over boundObjects and clear memory bindings 38573fbc856120217247c72fb5ed88500000f3881c45Jesse Hall State.CommandBuffers[commandBuffers[i]] = null 3858fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall } 3859d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3860d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3861d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 3862d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkBeginCommandBuffer( 38633fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 38643fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkCommandBufferBeginInfo* pBeginInfo) { 38653fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO) 38663fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 3867d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3868d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // TODO: iterate over boundObjects and clear memory bindings 3869d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3870d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3871d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3872d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3873d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 3874d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkEndCommandBuffer( 38753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer) { 38763fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 3877d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3878d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3879d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3880d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3881d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 3882d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkResetCommandBuffer( 38833fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 38843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBufferResetFlags flags) { 38853fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 3886d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3887d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // TODO: iterate over boundObjects and clear memory bindings 3888d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3889d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3890d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3891d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3892d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3893d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Command buffer building functions 3894d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3895d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 3896d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBindPipeline( 38973fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 3898d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineBindPoint pipelineBindPoint, 3899d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipeline pipeline) { 39003fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 3901d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineObject := GetPipeline(pipeline) 39023fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == pipelineObject.device) 3903d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3904d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hall queue := switch (pipelineBindPoint) { 3905d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT 3906d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT 3907d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 39083fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue) 3909d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3910d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3911d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 39125ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetViewport( 39133fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 39145ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 viewportCount, 39155ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkViewport* pViewports) { 39163fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 39173fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 39185ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 3919d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 39205ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall@threadSafety("app") 39215ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetScissor( 39223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 39235ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 scissorCount, 39245ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkRect2D* pScissors) { 39253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 39263fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 3927d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3928d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3929d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 39305ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetLineWidth( 39313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 39325ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 lineWidth) { 39333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 39343fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 39355ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 3936d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 39375ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall@threadSafety("app") 39385ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetDepthBias( 39393fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 3940a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall f32 depthBiasConstantFactor, 39415ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 depthBiasClamp, 3942a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall f32 depthBiasSlopeFactor) { 39433fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 39443fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 3945d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3946d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3947d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 39485ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetBlendConstants( 39493fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 39505ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // TODO(jessehall): apic only supports 'const' on pointer types. Using 39515ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // an annotation as a quick hack to pass this to the template without 39525ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // having to modify the AST and semantic model. 3953b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall @readonly f32[4] blendConstants) { 39543fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 39553fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 39565ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 3957d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 39585ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall@threadSafety("app") 39595ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetDepthBounds( 39603fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 39615ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 minDepthBounds, 39625ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 maxDepthBounds) { 39633fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 39643fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 3965d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3966d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3967d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 39685ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetStencilCompareMask( 39693fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 39705ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkStencilFaceFlags faceMask, 397165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 compareMask) { 39723fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 39733fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 39745ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 3975d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 39765ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall@threadSafety("app") 39775ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetStencilWriteMask( 39783fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 39795ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkStencilFaceFlags faceMask, 398065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 writeMask) { 39813fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 39823fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 39835ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 39845ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 39855ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall@threadSafety("app") 39865ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetStencilReference( 39873fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 39885ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkStencilFaceFlags faceMask, 398965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 reference) { 39903fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 39913fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 3992d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3993d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3994d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 3995d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBindDescriptorSets( 39963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 3997d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineBindPoint pipelineBindPoint, 3998d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineLayout layout, 3999d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 firstSet, 400003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 descriptorSetCount, 4001d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkDescriptorSet* pDescriptorSets, 4002d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 dynamicOffsetCount, 4003d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const u32* pDynamicOffsets) { 40043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4005d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 400603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall descriptorSets := pDescriptorSets[0:descriptorSetCount] 400703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. descriptorSetCount) { 4008d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorSet := descriptorSets[i] 4009d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorSetObject := GetDescriptorSet(descriptorSet) 40103fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == descriptorSetObject.device) 4011d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4012d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4013d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount] 4014d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. dynamicOffsetCount) { 4015d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall dynamicOffset := dynamicOffsets[i] 4016d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4017d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4018d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hall queue := switch (pipelineBindPoint) { 4019d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT 4020d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT 4021d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 40223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue) 4023d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4024d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4025d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4026d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBindIndexBuffer( 40273fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4028d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer, 40295ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset, 4030d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkIndexType indexType) { 40313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4032d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 40333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == bufferObject.device) 4034d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 40353fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 4036d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 40373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4038d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4039d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4040d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4041d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBindVertexBuffers( 40423fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4043d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 startBinding, 4044d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 bindingCount, 4045d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkBuffer* pBuffers, 40465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkDeviceSize* pOffsets) { 40473fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4048d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4049d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // TODO: check if not [startBinding:startBinding+bindingCount] 4050d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall buffers := pBuffers[0:bindingCount] 4051d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall offsets := pOffsets[0:bindingCount] 4052d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. bindingCount) { 4053d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall buffer := buffers[i] 4054d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall offset := offsets[i] 4055d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 40563fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == bufferObject.device) 4057d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 40583fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 4059d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4060d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 40613fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4062d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4063d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4064d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4065d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdDraw( 40663fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4067d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 vertexCount, 40685ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 instanceCount, 40695ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 firstVertex, 40705ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 firstInstance) { 40713fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4072d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 40733fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4074d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4075d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4076d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4077d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdDrawIndexed( 40783fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4079d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 indexCount, 40805ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 instanceCount, 40815ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 firstIndex, 4082d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 vertexOffset, 40835ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 firstInstance) { 40843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4085d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 40863fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4087d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4088d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4089d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4090d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdDrawIndirect( 40913fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4092d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer, 40935ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset, 409403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 drawCount, 4095d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 stride) { 40963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4097d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 40983fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == bufferObject.device) 4099d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41003fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 4101d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41023fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4103d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4104d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4105d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4106d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdDrawIndexedIndirect( 41073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4108d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer, 41095ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset, 411003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 drawCount, 4111d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 stride) { 41123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4113d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 41143fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == bufferObject.device) 4115d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41163fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 4117d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4119d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4120d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4121d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4122d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdDispatch( 41233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4124d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 x, 4125d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 y, 4126d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 z) { 41273fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4128d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT) 4130d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4131d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4132d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4133d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdDispatchIndirect( 41343fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4135d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer, 41365ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset) { 41373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4138d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 41393fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == bufferObject.device) 4140d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41413fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 4142d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41433fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT) 4144d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4145d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4146d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4147d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdCopyBuffer( 41483fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4149d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer srcBuffer, 41503fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkBuffer dstBuffer, 4151d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 regionCount, 4152d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkBufferCopy* pRegions) { 41533fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4154d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcBufferObject := GetBuffer(srcBuffer) 41553fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstBufferObject := GetBuffer(dstBuffer) 41563fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == srcBufferObject.device) 41573fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstBufferObject.device) 4158d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4159d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall regions := pRegions[0:regionCount] 4160d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. regionCount) { 4161d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall region := regions[i] 4162d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4163d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41643fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory) 41653fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory) 4166d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 416765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 4168d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4169d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4170d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4171d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdCopyImage( 41723fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4173d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage srcImage, 4174d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout srcImageLayout, 41753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImage dstImage, 41763fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImageLayout dstImageLayout, 4177d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 regionCount, 4178d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageCopy* pRegions) { 41793fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4180d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcImageObject := GetImage(srcImage) 41813fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstImageObject := GetImage(dstImage) 41823fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == srcImageObject.device) 41833fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstImageObject.device) 4184d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4185d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall regions := pRegions[0:regionCount] 4186d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. regionCount) { 4187d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall region := regions[i] 4188d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4189d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41903fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) 41913fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) 4192d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 419365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 4194d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4195d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4196d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4197d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBlitImage( 41983fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4199d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage srcImage, 4200d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout srcImageLayout, 42013fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImage dstImage, 42023fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImageLayout dstImageLayout, 4203d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 regionCount, 4204d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageBlit* pRegions, 420523ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkFilter filter) { 42063fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4207d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcImageObject := GetImage(srcImage) 42083fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstImageObject := GetImage(dstImage) 42093fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == srcImageObject.device) 42103fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstImageObject.device) 4211d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4212d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall regions := pRegions[0:regionCount] 4213d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. regionCount) { 4214d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall region := regions[i] 4215d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4216d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 42173fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) 42183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) 4219d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 42203fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4221d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4222d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4223d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4224d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdCopyBufferToImage( 42253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4226d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer srcBuffer, 42273fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImage dstImage, 42283fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImageLayout dstImageLayout, 4229d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 regionCount, 4230d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkBufferImageCopy* pRegions) { 42313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4232d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcBufferObject := GetBuffer(srcBuffer) 42333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstImageObject := GetImage(dstImage) 42343fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == srcBufferObject.device) 42353fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstImageObject.device) 4236d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4237d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall regions := pRegions[0:regionCount] 4238d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. regionCount) { 4239d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall region := regions[i] 4240d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4241d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 42423fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory) 42433fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) 4244d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 424565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 4246d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4247d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4248d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4249d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdCopyImageToBuffer( 42503fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4251d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage srcImage, 4252d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout srcImageLayout, 42533fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkBuffer dstBuffer, 4254d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 regionCount, 4255d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkBufferImageCopy* pRegions) { 42563fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4257d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcImageObject := GetImage(srcImage) 42583fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstBufferObject := GetBuffer(dstBuffer) 42593fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == srcImageObject.device) 42603fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstBufferObject.device) 4261d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4262d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall regions := pRegions[0:regionCount] 4263d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. regionCount) { 4264d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall region := regions[i] 4265d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4266d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 42673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) 42683fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory) 4269d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 427065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 4271d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4272d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4273d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4274d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdUpdateBuffer( 42753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 42763fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkBuffer dstBuffer, 42773fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize dstOffset, 42785ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize dataSize, 4279d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const u32* pData) { 42803fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 42813fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstBufferObject := GetBuffer(dstBuffer) 42823fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstBufferObject.device) 4283d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4284d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall data := pData[0:dataSize] 4285d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 42863fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory) 4287d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 428865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 4289d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4290d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4291d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4292d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdFillBuffer( 42933fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 42943fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkBuffer dstBuffer, 42953fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize dstOffset, 4296b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkDeviceSize size, 4297d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 data) { 42983fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 42993fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstBufferObject := GetBuffer(dstBuffer) 43003fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstBufferObject.device) 4301d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 430265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 4303d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4304d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4305d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4306d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdClearColorImage( 43073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4308d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image, 4309d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout imageLayout, 4310d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkClearColorValue* pColor, 4311d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 rangeCount, 4312d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageSubresourceRange* pRanges) { 43133fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4314d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 43153fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == imageObject.device) 4316d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4317d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall ranges := pRanges[0:rangeCount] 4318d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. rangeCount) { 4319d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall range := ranges[i] 4320d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4321d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, image, imageObject.memory) 4323d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43243fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4325d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4326d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4327d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4328d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdClearDepthStencilImage( 43293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4330d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image, 4331d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout imageLayout, 43325ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkClearDepthStencilValue* pDepthStencil, 4333d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 rangeCount, 4334d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageSubresourceRange* pRanges) { 43353fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4336d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 43373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == imageObject.device) 4338d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4339d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall ranges := pRanges[0:rangeCount] 4340d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. rangeCount) { 4341d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall range := ranges[i] 4342d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4343d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43443fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, image, imageObject.memory) 4345d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43463fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4347d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4348d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4349d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4350ae38f7355fd03b777313e13586585a74e0dee05bJesse Hallcmd void vkCmdClearAttachments( 43513fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4352ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 attachmentCount, 4353ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall const VkClearAttachment* pAttachments, 4354d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 rectCount, 4355a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall const VkClearRect* pRects) { 43563fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4357d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4358d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall rects := pRects[0:rectCount] 4359d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. rectCount) { 4360d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall rect := rects[i] 4361d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4362d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43633fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4364d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4365d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4366d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4367d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdResolveImage( 43683fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4369d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage srcImage, 4370d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout srcImageLayout, 43713fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImage dstImage, 43723fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImageLayout dstImageLayout, 4373d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 regionCount, 4374d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageResolve* pRegions) { 43753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4376d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcImageObject := GetImage(srcImage) 43773fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstImageObject := GetImage(dstImage) 43783fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == srcImageObject.device) 43793fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstImageObject.device) 4380d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4381d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall regions := pRegions[0:regionCount] 4382d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. regionCount) { 4383d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall region := regions[i] 4384d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4385d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43863fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) 43873fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) 4388d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43893fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4390d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4391d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4392d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4393d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdSetEvent( 43943fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4395d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEvent event, 4396d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineStageFlags stageMask) { 43973fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4398d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 43993fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == eventObject.device) 4400d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4401d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4402d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4403d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdResetEvent( 44043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4405d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEvent event, 4406d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineStageFlags stageMask) { 44073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4408d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 44093fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == eventObject.device) 4410d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4411d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4412d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4413d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdWaitEvents( 44143fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4415d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 eventCount, 4416d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkEvent* pEvents, 4417d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineStageFlags srcStageMask, 44183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkPipelineStageFlags dstStageMask, 44193fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 memoryBarrierCount, 44203fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const void* const* ppMemoryBarriers) { 44213fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4422d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4423d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall events := pEvents[0:eventCount] 4424d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. eventCount) { 4425d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall event := events[i] 4426d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 44273fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == eventObject.device) 4428d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4429d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 44303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall pMemoryBarriers := ppMemoryBarriers[0:memoryBarrierCount] 44313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall for i in (0 .. memoryBarrierCount) { 44323fbc856120217247c72fb5ed88500000f3881c45Jesse Hall switch as!VkMemoryBarrier const*(pMemoryBarriers[i])[0].sType { 4433d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_STRUCTURE_TYPE_MEMORY_BARRIER: { 44343fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryBarrier := as!VkMemoryBarrier const*(pMemoryBarriers[i])[0] 4435d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4436d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER: { 44373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall imageMemoryBarrier := as!VkImageMemoryBarrier const*(pMemoryBarriers[i])[0] 44383fbc856120217247c72fb5ed88500000f3881c45Jesse Hall imageObject := GetImage(imageMemoryBarrier.image) 44393fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(imageObject.device == commandBufferObject.device) 4440d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4441d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: { 44423fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bufferMemoryBarrier := as!VkBufferMemoryBarrier const*(pMemoryBarriers[i])[0] 44433fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bufferObject := GetBuffer(bufferMemoryBarrier.buffer) 44443fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(bufferObject.device == commandBufferObject.device) 4445d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4446d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4447d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4448d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4449d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4450d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4451d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdPipelineBarrier( 44523fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4453d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineStageFlags srcStageMask, 44543fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkPipelineStageFlags dstStageMask, 4455dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkDependencyFlags dependencyFlags, 44563fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 memoryBarrierCount, 44573fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const void* const* ppMemoryBarriers) { 44583fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4459d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 44603fbc856120217247c72fb5ed88500000f3881c45Jesse Hall pMemoryBarriers := ppMemoryBarriers[0:memoryBarrierCount] 44613fbc856120217247c72fb5ed88500000f3881c45Jesse Hall for i in (0 .. memoryBarrierCount) { 44623fbc856120217247c72fb5ed88500000f3881c45Jesse Hall switch as!VkMemoryBarrier const*(pMemoryBarriers[i])[0].sType { 4463d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_STRUCTURE_TYPE_MEMORY_BARRIER: { 44643fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryBarrier := as!VkMemoryBarrier const*(pMemoryBarriers[i])[0] 4465d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4466d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER: { 44673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall imageMemoryBarrier := as!VkImageMemoryBarrier const*(pMemoryBarriers[i])[0] 44683fbc856120217247c72fb5ed88500000f3881c45Jesse Hall imageObject := GetImage(imageMemoryBarrier.image) 44693fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(imageObject.device == commandBufferObject.device) 4470d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4471d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: { 44723fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bufferMemoryBarrier := as!VkBufferMemoryBarrier const*(pMemoryBarriers[i])[0] 44733fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bufferObject := GetBuffer(bufferMemoryBarrier.buffer) 44743fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(bufferObject.device == commandBufferObject.device) 4475d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4476d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4477d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4478d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4479d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4480d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4481d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBeginQuery( 44823fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4483d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPool queryPool, 448465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 entry, 4485d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryControlFlags flags) { 44863fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4487d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPoolObject := GetQueryPool(queryPool) 44883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == queryPoolObject.device) 4489d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4490d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4491d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4492d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdEndQuery( 44933fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4494d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPool queryPool, 449565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 entry) { 44963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4497d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPoolObject := GetQueryPool(queryPool) 44983fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == queryPoolObject.device) 4499d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4500d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4501d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4502d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdResetQueryPool( 45033fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4504d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPool queryPool, 4505d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 startQuery, 4506d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queryCount) { 45073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4508d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPoolObject := GetQueryPool(queryPool) 45093fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == queryPoolObject.device) 4510d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4511d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4512d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4513d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdWriteTimestamp( 45143fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 45156f39a6d1c6202b5d1bb0aa0dc9b2e130e5b73666Jesse Hall VkPipelineStageFlagBits pipelineStage, 4516a3a7a1d37bdfad56245b75edac49f8aceded321dJesse Hall VkQueryPool queryPool, 451765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 entry) { 45183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4519a3a7a1d37bdfad56245b75edac49f8aceded321dJesse Hall queryPoolObject := GetQueryPool(queryPool) 45203fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == queryPoolObject.device) 4521d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4522d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4523d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4524d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdCopyQueryPoolResults( 45253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4526d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPool queryPool, 4527d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 startQuery, 4528d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queryCount, 45293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkBuffer dstBuffer, 45303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize dstOffset, 4531a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall VkDeviceSize stride, 4532d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryResultFlags flags) { 45333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4534d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPoolObject := GetQueryPool(queryPool) 45353fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstBufferObject := GetBuffer(dstBuffer) 45363fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == queryPoolObject.device) 45373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstBufferObject.device) 4538d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4539d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4540d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdPushConstants( 45413fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4542d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineLayout layout, 4543d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkShaderStageFlags stageFlags, 454403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 offset, 454503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 size, 4546d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* values) { 45473fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4548d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall layoutObject := GetPipelineLayout(layout) 45493fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == layoutObject.device) 4550d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4551d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4552d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4553d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBeginRenderPass( 45543fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4555d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkRenderPassBeginInfo* pRenderPassBegin, 455665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkSubpassContents contents) { 45573fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4558d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall renderPassObject := GetRenderPass(pRenderPassBegin.renderPass) 4559d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer) 45603fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == renderPassObject.device) 45613fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == framebufferObject.device) 4562d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 45633fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4564d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4565d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4566d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdNextSubpass( 45673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 456865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkSubpassContents contents) { 45693fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4570d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4571d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4572d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4573d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdEndRenderPass( 45743fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer) { 45753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4576d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 45773fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4578d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4579d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4580d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdExecuteCommands( 45813fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 45823fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 commandBuffersCount, 45833fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkCommandBuffer* pCommandBuffers) { 45843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 45853fbc856120217247c72fb5ed88500000f3881c45Jesse Hall 45863fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBuffers := pCommandBuffers[0:commandBuffersCount] 45873fbc856120217247c72fb5ed88500000f3881c45Jesse Hall for i in (0 .. commandBuffersCount) { 45883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall secondaryCommandBuffer := commandBuffers[i] 45893fbc856120217247c72fb5ed88500000f3881c45Jesse Hall secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer) 45903fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == secondaryCommandBufferObject.device) 4591d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4592d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4593d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 45943e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 45951356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd void vkDestroySurfaceKHR( 45961356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 45970e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall VkSurfaceKHR surface, 45980e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator) { 45991356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 46001356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall surfaceObject := GetSurface(surface) 46011356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall assert(surfaceObject.instance == instance) 460288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 46031356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall State.Surfaces[surface] = null 46041356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 46051356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 46063e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 4607a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR( 46081356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPhysicalDevice physicalDevice, 46091356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 queueFamilyIndex, 4610b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkSurfaceKHR surface, 4611b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkBool32* pSupported) { 46122818f93c5bc8b186d3455a1ea2fce900e7403465Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 46132818f93c5bc8b186d3455a1ea2fce900e7403465Jesse Hall 4614b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall return ? 46152818f93c5bc8b186d3455a1ea2fce900e7403465Jesse Hall} 46162818f93c5bc8b186d3455a1ea2fce900e7403465Jesse Hall 46173e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 4618b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hallcmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR( 4619b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkPhysicalDevice physicalDevice, 46201356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR surface, 4621b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) { 4622b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 462388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 4624b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall surfaceCapabilities := ? 4625b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall pSurfaceCapabilities[0] = surfaceCapabilities 462688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 462788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 462888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 462988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 46303e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 4631b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hallcmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR( 4632b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkPhysicalDevice physicalDevice, 46331356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR surface, 463403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pSurfaceFormatCount, 46351356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceFormatKHR* pSurfaceFormats) { 4636b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 463788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 463888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine count := as!u32(?) 463903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pSurfaceFormatCount[0] = count 464088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine surfaceFormats := pSurfaceFormats[0:count] 464188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 464288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine for i in (0 .. count) { 464388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine surfaceFormat := ? 464488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine surfaceFormats[i] = surfaceFormat 464588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine } 464688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 464788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 464888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 464988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 46503e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 4651b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hallcmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR( 4652b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkPhysicalDevice physicalDevice, 46531356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR surface, 465403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPresentModeCount, 46551356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPresentModeKHR* pPresentModes) { 4656b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 465788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 465888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine count := as!u32(?) 465903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pPresentModeCount[0] = count 466088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine presentModes := pPresentModes[0:count] 466188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 466288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine for i in (0 .. count) { 466388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine presentMode := ? 466488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine presentModes[i] = presentMode 466588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine } 466688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 466788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 466888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 466988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 46703e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 467188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentinecmd VkResult vkCreateSwapchainKHR( 467288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkDevice device, 467388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine const VkSwapchainCreateInfoKHR* pCreateInfo, 46740e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 467588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkSwapchainKHR* pSwapchain) { 46761356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR) 467788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine deviceObject := GetDevice(device) 467888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 467988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine swapchain := ? 468088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine pSwapchain[0] = swapchain 468188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine State.Swapchains[swapchain] = new!SwapchainObject(device: device) 468288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 468388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 468488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 468588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 46863e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 46871356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd void vkDestroySwapchainKHR( 468888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkDevice device, 46890e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall VkSwapchainKHR swapchain, 46900e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator) { 469188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine deviceObject := GetDevice(device) 469288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine swapchainObject := GetSwapchain(swapchain) 469388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine assert(swapchainObject.device == device) 469488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 469588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine State.Swapchains[swapchain] = null 469688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 469788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 46983e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 469988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentinecmd VkResult vkGetSwapchainImagesKHR( 470088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkDevice device, 470188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkSwapchainKHR swapchain, 470203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pSwapchainImageCount, 470388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkImage* pSwapchainImages) { 470488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine deviceObject := GetDevice(device) 470588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 470688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine count := as!u32(?) 470703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pSwapchainImageCount[0] = count 470888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine swapchainImages := pSwapchainImages[0:count] 470988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 471088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine for i in (0 .. count) { 471188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine swapchainImage := ? 471288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine swapchainImages[i] = swapchainImage 47131356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall State.Images[swapchainImage] = new!ImageObject(device: device) 471488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine } 471588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 471688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 471788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 471888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 47193e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 472088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentinecmd VkResult vkAcquireNextImageKHR( 472188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkDevice device, 472288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkSwapchainKHR swapchain, 472388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine u64 timeout, 472488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkSemaphore semaphore, 47251356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkFence fence, 472688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine u32* pImageIndex) { 472788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine deviceObject := GetDevice(device) 472888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine swapchainObject := GetSwapchain(swapchain) 472988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 473088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine imageIndex := ? 473188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine pImageIndex[0] = imageIndex 473288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 473388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 473488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 473588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 47363e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 473788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentinecmd VkResult vkQueuePresentKHR( 473888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkQueue queue, 473988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkPresentInfoKHR* pPresentInfo) { 474088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine queueObject := GetQueue(queue) 474188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 474288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine presentInfo := ? 474388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine pPresentInfo[0] = presentInfo 474488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 474588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 474688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 474788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 47483e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 47491356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR( 47501356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPhysicalDevice physicalDevice, 475103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 47521356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayPropertiesKHR* pProperties) { 47531356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 47541356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 47551356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 47561356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 47573e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 4758a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR( 4759a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 4760a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32* pPropertyCount, 4761a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDisplayPlanePropertiesKHR* pProperties) { 4762a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4763a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 4764a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 4765a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 47663e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 4767a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR( 4768a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 4769a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32* pPropertyCount, 4770a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDisplayKHR* pProperties) { 4771a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4772a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 4773a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 4774a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 47753e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 47761356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkGetDisplayModePropertiesKHR( 47771356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPhysicalDevice physicalDevice, 47781356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayKHR display, 477903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 478003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkDisplayModePropertiesKHR* pProperties) { 47811356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 47821356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 47831356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 47841356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 47853e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 47861356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkCreateDisplayModeKHR( 47871356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPhysicalDevice physicalDevice, 47881356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayKHR display, 47891356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const VkDisplayModeCreateInfoKHR* pCreateInfo, 47900e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 47911356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayModeKHR* pMode) { 47921356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 47931356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 47941356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 47951356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 47963e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 4797a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkGetDisplayPlaneCapabilitiesKHR( 47981356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPhysicalDevice physicalDevice, 4799a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDisplayModeCreateInfoKHR mode, 48001356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 planeIndex, 4801a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDisplayPlaneCapabilitiesKHR* pCapabilities) { 48021356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 48031356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 48041356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 48051356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 48063e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 4807a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkCreateDisplayPlaneSurfaceKHR( 4808a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkInstance instance, 4809a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, 48100e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 4811a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkSurfaceKHR* pSurface) { 4812a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 4813a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 4814a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 48153e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xlib_surface") 4816a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkCreateXlibSurfaceKHR( 48171356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 48181356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall platform.Display* dpy, 48191356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall platform.Window window, 48200e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 48211356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR* pSurface) { 48221356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 48231356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 48241356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 48251356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 48263e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xlib_surface") 4827a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR( 4828a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 4829a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 queueFamilyIndex, 4830a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall platform.Display* dpy, 483165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall platform.VisualID visualID) { 4832a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4833a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 4834a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 4835a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 48363e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xcb_surface") 48371356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkCreateXCBSurfaceKHR( 48381356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 48391356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall platform.xcb_connection_t* connection, 48401356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall platform.xcb_window_t window, 48410e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 48421356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR* pSurface) { 48431356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 48441356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 48451356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 48461356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 48473e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xlib_surface") 4848a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR( 4849a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 4850a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 queueFamilyIndex, 4851a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall platform.xcb_connection_t* connection, 4852a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall platform.xcb_visualid_t visual_id) { 4853a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4854a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 4855a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 4856a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 48573e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_wayland_surface") 48581356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkCreateWaylandSurfaceKHR( 48591356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 48601356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall platform.wl_display* display, 48611356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall platform.wl_surface* surface, 48620e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 48631356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR* pSurface) { 48641356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 48651356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 48661356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 48671356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 48683e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_wayland_surface") 4869a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR( 4870a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 4871a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 queueFamilyIndex, 4872a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall platform.wl_display* display) { 4873a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4874a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 4875a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 4876a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 48773e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_mir_surface") 48781356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkCreateMirSurfaceKHR( 48791356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 48801356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall platform.MirConnection* connection, 48811356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall platform.MirSurface* mirSurface, 48820e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 48831356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR* pSurface) { 48841356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 48851356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 48861356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 48871356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 48883e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_mir_surface") 4889a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR( 4890a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 4891a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 queueFamilyIndex, 4892a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall platform.MirConnection* connection) { 4893a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4894a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 4895a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 4896a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 48973e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_android_surface") 48981356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkCreateAndroidSurfaceKHR( 48991356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 49000e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall platform.ANativeWindow* window, 49010e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 49021356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR* pSurface) { 49031356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 49041356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 49051356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 49061356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 49073e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_win32_surface") 49081356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkCreateWin32SurfaceKHR( 49091356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 49101356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall platform.HINSTANCE hinstance, 49111356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall platform.HWND hwnd, 49120e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 49131356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR* pSurface) { 49141356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 49151356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 49161356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 49171356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 49183e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_win32_surface") 4919a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR( 4920a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 4921a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 queueFamilyIndex) { 4922a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4923a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 4924a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 4925a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 4926d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4927d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall//////////////// 4928d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Validation // 4929d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall//////////////// 4930d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4931d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallextern void validate(string layerName, bool condition, string message) 4932d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4933d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4934d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////////////////////// 4935d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Internal State Tracking // 4936d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////////////////////// 4937d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4938d27f6aad91e6cdb7a867c432f66a852acc077897Jesse HallStateObject State 4939d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4940d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class StateObject { 4941d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Dispatchable objects. 4942d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkInstance, ref!InstanceObject) Instances 4943d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices 4944d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkDevice, ref!DeviceObject) Devices 4945d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkQueue, ref!QueueObject) Queues 49463fbc856120217247c72fb5ed88500000f3881c45Jesse Hall map!(VkCommandBuffer, ref!CommandBufferObject) CommandBuffers 4947d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4948d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Non-dispatchable objects. 4949d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkDeviceMemory, ref!DeviceMemoryObject) DeviceMemories 4950d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkBuffer, ref!BufferObject) Buffers 4951d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkBufferView, ref!BufferViewObject) BufferViews 4952d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkImage, ref!ImageObject) Images 4953d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkImageView, ref!ImageViewObject) ImageViews 4954d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkShaderModule, ref!ShaderModuleObject) ShaderModules 4955d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkPipeline, ref!PipelineObject) Pipelines 4956d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkPipelineLayout, ref!PipelineLayoutObject) PipelineLayouts 4957d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkSampler, ref!SamplerObject) Samplers 4958d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkDescriptorSet, ref!DescriptorSetObject) DescriptorSets 4959d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkDescriptorSetLayout, ref!DescriptorSetLayoutObject) DescriptorSetLayouts 4960d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkDescriptorPool, ref!DescriptorPoolObject) DescriptorPools 4961d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkFence, ref!FenceObject) Fences 4962d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkSemaphore, ref!SemaphoreObject) Semaphores 4963d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkEvent, ref!EventObject) Events 4964d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkQueryPool, ref!QueryPoolObject) QueryPools 4965d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkFramebuffer, ref!FramebufferObject) Framebuffers 4966d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkRenderPass, ref!RenderPassObject) RenderPasses 4967d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkPipelineCache, ref!PipelineCacheObject) PipelineCaches 49683fbc856120217247c72fb5ed88500000f3881c45Jesse Hall map!(VkCommandPool, ref!CommandPoolObject) CommandPools 49691356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall map!(VkSurfaceKHR, ref!SurfaceObject) Surfaces 497088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine map!(VkSwapchainKHR, ref!SwapchainObject) Swapchains 4971d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4972d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4973d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class InstanceObject { 4974d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4975d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4976d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class PhysicalDeviceObject { 4977d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkInstance instance 4978d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4979d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4980d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class DeviceObject { 4981d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice 4982d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4983d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4984d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class QueueObject { 4985d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 4986d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueueFlags flags 4987d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4988d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 49893fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@internal class CommandBufferObject { 4990d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 4991d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(u64, VkDeviceMemory) boundObjects 4992d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueueFlags queueFlags 4993d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4994d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4995d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class DeviceMemoryObject { 49963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDevice device 49973fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize allocationSize 49983fbc856120217247c72fb5ed88500000f3881c45Jesse Hall map!(u64, VkDeviceSize) boundObjects 49993fbc856120217247c72fb5ed88500000f3881c45Jesse Hall map!(VkCommandBuffer, VkCommandBuffer) boundCommandBuffers 5000d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5001d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5002d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class BufferObject { 5003d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 50043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory 50053fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize memoryOffset 5006d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5007d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5008d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class BufferViewObject { 5009d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5010d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer 5011d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5012d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5013d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class ImageObject { 5014d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 50153fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory 50163fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize memoryOffset 5017d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5018d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5019d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class ImageViewObject { 5020d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5021d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image 5022d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5023d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5024d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class ShaderObject { 5025d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5026d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5027d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5028d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class ShaderModuleObject { 5029d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5030d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5031d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5032d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class PipelineObject { 5033d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5034d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5035d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5036d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class PipelineLayoutObject { 5037d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5038d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5039d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5040d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class SamplerObject { 5041d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5042d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5043d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5044d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class DescriptorSetObject { 5045d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5046d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5047d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5048d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class DescriptorSetLayoutObject { 5049d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5050d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5051d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5052d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class DescriptorPoolObject { 5053d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5054d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5055d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5056d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class FenceObject { 5057d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5058d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bool signaled 5059d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5060d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5061d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class SemaphoreObject { 5062d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5063d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5064d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5065d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class EventObject { 5066d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5067d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5068d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5069d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class QueryPoolObject { 5070d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5071d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5072d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5073d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class FramebufferObject { 5074d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5075d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5076d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5077d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class RenderPassObject { 5078d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5079d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5080d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5081d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class PipelineCacheObject { 5082d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5083d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5084d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 50853fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@internal class CommandPoolObject { 5086d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5087d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5088d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 50891356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall@internal class SurfaceObject { 50901356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance 50911356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 50921356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 509388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine@internal class SwapchainObject { 509488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkDevice device 509588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 509688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 5097d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!InstanceObject GetInstance(VkInstance instance) { 5098d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(instance in State.Instances) 5099d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Instances[instance] 5100d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5101d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5102d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!PhysicalDeviceObject GetPhysicalDevice(VkPhysicalDevice physicalDevice) { 5103d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(physicalDevice in State.PhysicalDevices) 5104d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.PhysicalDevices[physicalDevice] 5105d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5106d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5107d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!DeviceObject GetDevice(VkDevice device) { 5108d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(device in State.Devices) 5109d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Devices[device] 5110d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5111d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5112d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!QueueObject GetQueue(VkQueue queue) { 5113d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(queue in State.Queues) 5114d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Queues[queue] 5115d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5116d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 51173fbc856120217247c72fb5ed88500000f3881c45Jesse Hallmacro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) { 51183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBuffer in State.CommandBuffers) 51193fbc856120217247c72fb5ed88500000f3881c45Jesse Hall return State.CommandBuffers[commandBuffer] 5120d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5121d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 51223fbc856120217247c72fb5ed88500000f3881c45Jesse Hallmacro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) { 51233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memory in State.DeviceMemories) 51243fbc856120217247c72fb5ed88500000f3881c45Jesse Hall return State.DeviceMemories[memory] 5125d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5126d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5127d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!BufferObject GetBuffer(VkBuffer buffer) { 5128d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(buffer in State.Buffers) 5129d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Buffers[buffer] 5130d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5131d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5132d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!BufferViewObject GetBufferView(VkBufferView bufferView) { 5133d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(bufferView in State.BufferViews) 5134d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.BufferViews[bufferView] 5135d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5136d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5137d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!ImageObject GetImage(VkImage image) { 5138d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(image in State.Images) 5139d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Images[image] 5140d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5141d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5142d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!ImageViewObject GetImageView(VkImageView imageView) { 5143d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageView in State.ImageViews) 5144d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.ImageViews[imageView] 5145d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5146d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5147d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) { 5148d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(shaderModule in State.ShaderModules) 5149d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.ShaderModules[shaderModule] 5150d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5151d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5152d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!PipelineObject GetPipeline(VkPipeline pipeline) { 5153d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipeline in State.Pipelines) 5154d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Pipelines[pipeline] 5155d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5156d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5157d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!PipelineLayoutObject GetPipelineLayout(VkPipelineLayout pipelineLayout) { 5158d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineLayout in State.PipelineLayouts) 5159d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.PipelineLayouts[pipelineLayout] 5160d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5161d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5162d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!SamplerObject GetSampler(VkSampler sampler) { 5163d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(sampler in State.Samplers) 5164d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Samplers[sampler] 5165d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5166d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5167d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!DescriptorSetObject GetDescriptorSet(VkDescriptorSet descriptorSet) { 5168d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorSet in State.DescriptorSets) 5169d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.DescriptorSets[descriptorSet] 5170d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5171d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5172d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!DescriptorSetLayoutObject GetDescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout) { 5173d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorSetLayout in State.DescriptorSetLayouts) 5174d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.DescriptorSetLayouts[descriptorSetLayout] 5175d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5176d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5177d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool) { 5178d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorPool in State.DescriptorPools) 5179d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.DescriptorPools[descriptorPool] 5180d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5181d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5182d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!FenceObject GetFence(VkFence fence) { 5183d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(fence in State.Fences) 5184d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Fences[fence] 5185d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5186d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5187d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!SemaphoreObject GetSemaphore(VkSemaphore semaphore) { 5188d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(semaphore in State.Semaphores) 5189d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Semaphores[semaphore] 5190d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5191d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5192d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!EventObject GetEvent(VkEvent event) { 5193d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(event in State.Events) 5194d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Events[event] 5195d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5196d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5197d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!QueryPoolObject GetQueryPool(VkQueryPool queryPool) { 5198d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(queryPool in State.QueryPools) 5199d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.QueryPools[queryPool] 5200d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5201d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5202d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!FramebufferObject GetFramebuffer(VkFramebuffer framebuffer) { 5203d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(framebuffer in State.Framebuffers) 5204d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Framebuffers[framebuffer] 5205d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5206d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5207d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!RenderPassObject GetRenderPass(VkRenderPass renderPass) { 5208d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(renderPass in State.RenderPasses) 5209d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.RenderPasses[renderPass] 5210d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5211d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5212d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) { 5213d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineCache in State.PipelineCaches) 5214d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.PipelineCaches[pipelineCache] 5215d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5216d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 52173fbc856120217247c72fb5ed88500000f3881c45Jesse Hallmacro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) { 52183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandPool in State.CommandPools) 52193fbc856120217247c72fb5ed88500000f3881c45Jesse Hall return State.CommandPools[commandPool] 5220f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall} 522188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 52221356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallmacro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) { 52231356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall assert(surface in State.Surfaces) 52241356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return State.Surfaces[surface] 52251356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 52261356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 522788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentinemacro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) { 522888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine assert(swapchain in State.Swapchains) 522988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return State.Swapchains[swapchain] 523088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 5231d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hall 5232d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallmacro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) { 5233d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hall return as!VkQueueFlags(as!u32(flags) | as!u32(bit)) 5234d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hall} 5235