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) 293dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Halldefine VERSION_MAJOR 1 303dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Halldefine VERSION_MINOR 0 312676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Halldefine VERSION_PATCH 13 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 4833faaad096afbd0b103bd1284ce5b78cce74aa01Jesse Hall@extension("VK_KHR_surface") define VK_KHR_SURFACE_SPEC_VERSION 25 493e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" 501356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 512676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_SPEC_VERSION 68 523e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain" 531356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 54543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall@extension("VK_KHR_display") define VK_KHR_DISPLAY_SPEC_VERSION 21 553e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display" 561356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 57543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9 580e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain" 591356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 60543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6 613e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NAME "VK_KHR_xlib_surface" 621356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 63543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_SPEC_VERSION 6 643e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NAME "VK_KHR_xcb_surface" 651356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 66543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 5 673e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NAME "VK_KHR_wayland_surface" 681356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 69543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_SPEC_VERSION 4 703e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NAME "VK_KHR_mir_surface" 711356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 7233faaad096afbd0b103bd1284ce5b78cce74aa01Jesse Hall@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6 733e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NAME "VK_KHR_android_surface" 741356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 75543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_SPEC_VERSION 5 763e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NAME "VK_KHR_win32_surface" 771356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 78b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION 5 79b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_NAME "VK_ANDROID_native_buffer" 80b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu 812676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_SPEC_VERSION 2 82715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_NAME "VK_EXT_debug_report" 83715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall 842676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_SPEC_VERSION 1 852676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_NAME "VK_NV_glsl_shader" 862676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 872676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1 882676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_NAME "VK_KHR_sampler_mirror_clamp_to_edge" 892676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 902676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1 912676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_NAME "VK_IMG_filter_cubic" 922676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 932676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1 942676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_NAME "VK_AMD_rasterization_order" 952676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 962676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_SPEC_VERSION 3 972676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_NAME "VK_EXT_debug_marker" 982676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 99d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 100d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////// 101d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Types // 102d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////// 103d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1045ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Halltype u32 VkBool32 1055ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Halltype u32 VkFlags 1065ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Halltype u64 VkDeviceSize 1075ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Halltype u32 VkSampleMask 1085ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 109d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Dispatchable handle types. 110d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@dispatchHandle type u64 VkInstance 111d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@dispatchHandle type u64 VkPhysicalDevice 112d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@dispatchHandle type u64 VkDevice 113d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@dispatchHandle type u64 VkQueue 1143fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@dispatchHandle type u64 VkCommandBuffer 115d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 116d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Non dispatchable handle types. 117d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkDeviceMemory 1183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@nonDispatchHandle type u64 VkCommandPool 119d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkBuffer 120d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkBufferView 121d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkImage 122d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkImageView 123d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkShaderModule 124d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkPipeline 125d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkPipelineLayout 126d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkSampler 127d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkDescriptorSet 128d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkDescriptorSetLayout 129d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkDescriptorPool 130d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkFence 131d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkSemaphore 132d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkEvent 133d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkQueryPool 134d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkFramebuffer 135d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkRenderPass 136d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@nonDispatchHandle type u64 VkPipelineCache 1371356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 1383e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") @nonDispatchHandle type u64 VkSurfaceKHR 1391356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 1403e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") @nonDispatchHandle type u64 VkSwapchainKHR 1411356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 1423e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayKHR 1433e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayModeKHR 144d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 145715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@extension("VK_EXT_debug_report") @nonDispatchHandle type u64 VkDebugReportCallbackEXT 146715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall 147d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 148d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////// 149d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Enums // 150d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////// 151d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 152d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkImageLayout { 153d27f6aad91e6cdb7a867c432f66a852acc077897Jesse 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) 154d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_LAYOUT_GENERAL = 0x00000001, /// General layout when image can be used for any kind of access 155d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 0x00000002, /// Optimal layout when image is only used for color attachment read/write 156d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 0x00000003, /// Optimal layout when image is only used for depth/stencil attachment read/write 157d27f6aad91e6cdb7a867c432f66a852acc077897Jesse 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 158d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 0x00000005, /// Optimal layout when image is used for read only shader access 1593fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 0x00000006, /// Optimal layout when image is used only as source of transfer operations 1603fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 0x00000007, /// Optimal layout when image is used only as destination of transfer operations 1615ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU 1621356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 1633e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_swapchain") 164bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002, 165d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 166d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 167d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkAttachmentLoadOp { 168d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_ATTACHMENT_LOAD_OP_LOAD = 0x00000000, 169d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_ATTACHMENT_LOAD_OP_CLEAR = 0x00000001, 170d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002, 171d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 172d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 173d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkAttachmentStoreOp { 174d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_ATTACHMENT_STORE_OP_STORE = 0x00000000, 175d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_ATTACHMENT_STORE_OP_DONT_CARE = 0x00000001, 176d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 177d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 178d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkImageType { 179d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_TYPE_1D = 0x00000000, 180d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_TYPE_2D = 0x00000001, 181d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_TYPE_3D = 0x00000002, 182d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 183d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 184d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkImageTiling { 185c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_IMAGE_TILING_OPTIMAL = 0x00000000, 186c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_IMAGE_TILING_LINEAR = 0x00000001, 187d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 188d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 189d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkImageViewType { 190d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_1D = 0x00000000, 191d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_2D = 0x00000001, 192d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_3D = 0x00000002, 193d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_CUBE = 0x00000003, 194d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_1D_ARRAY = 0x00000004, 195d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_2D_ARRAY = 0x00000005, 196d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 0x00000006, 197d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 198d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1993fbc856120217247c72fb5ed88500000f3881c45Jesse Hallenum VkCommandBufferLevel { 2003fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0x00000000, 2013fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_BUFFER_LEVEL_SECONDARY = 0x00000001, 202d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 203d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 20465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallenum VkComponentSwizzle { 20565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_IDENTITY = 0x00000000, 20665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_ZERO = 0x00000001, 20765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_ONE = 0x00000002, 20865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_R = 0x00000003, 20965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_G = 0x00000004, 21065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_B = 0x00000005, 21165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COMPONENT_SWIZZLE_A = 0x00000006, 212d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 213d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 214d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkDescriptorType { 215d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_SAMPLER = 0x00000000, 216d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 0x00000001, 217d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 0x00000002, 218d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 0x00000003, 219d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 0x00000004, 220d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 0x00000005, 221d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 0x00000006, 222d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 0x00000007, 223d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 0x00000008, 224d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 0x00000009, 225d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 0x0000000a, 226d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 227d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 228d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkQueryType { 229d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_TYPE_OCCLUSION = 0x00000000, 230d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_TYPE_PIPELINE_STATISTICS = 0x00000001, /// Optional 231a3a7a1d37bdfad56245b75edac49f8aceded321dJesse Hall VK_QUERY_TYPE_TIMESTAMP = 0x00000002, 232d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 233d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 234d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkBorderColor { 235d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0x00000000, 236d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 0x00000001, 237d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 0x00000002, 238d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BORDER_COLOR_INT_OPAQUE_BLACK = 0x00000003, 239d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 0x00000004, 240d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BORDER_COLOR_INT_OPAQUE_WHITE = 0x00000005, 241d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 242d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 243d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkPipelineBindPoint { 244c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000000, 245c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_PIPELINE_BIND_POINT_COMPUTE = 0x00000001, 246d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 247d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 248d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkPrimitiveTopology { 249d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0x00000000, 250d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 0x00000001, 251d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 0x00000002, 252d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 0x00000003, 253d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 0x00000004, 254d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 0x00000005, 2553fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 0x00000006, 2563fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 0x00000007, 2573fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 0x00000008, 2583fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 0x00000009, 259091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 0x0000000a, 260d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 261d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 262d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkSharingMode { 263d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHARING_MODE_EXCLUSIVE = 0x00000000, 264d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHARING_MODE_CONCURRENT = 0x00000001, 265d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 266d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 267d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkIndexType { 268d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_INDEX_TYPE_UINT16 = 0x00000000, 269d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_INDEX_TYPE_UINT32 = 0x00000001, 270d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 271d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 27223ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hallenum VkFilter { 27323ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VK_FILTER_NEAREST = 0x00000000, 27423ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VK_FILTER_LINEAR = 0x00000001, 2752676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 2762676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall //@extension("VK_IMG_filter_cubic") 2772676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VK_FILTER_CUBIC_IMG = 1000015000, 278d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 279d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 28023ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hallenum VkSamplerMipmapMode { 28123ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VK_SAMPLER_MIPMAP_MODE_NEAREST = 0x00000001, /// Choose nearest mip level 28223ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VK_SAMPLER_MIPMAP_MODE_LINEAR = 0x00000002, /// Linear filter between mip levels 283d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 284d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 28523ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hallenum VkSamplerAddressMode { 286c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_SAMPLER_ADDRESS_MODE_REPEAT = 0x00000000, 287c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 0x00000001, 288c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 0x00000002, 289c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 0x00000003, 290c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 0x00000004, 291d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 292d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 293d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkCompareOp { 294d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_COMPARE_OP_NEVER = 0x00000000, 295d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_COMPARE_OP_LESS = 0x00000001, 296d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_COMPARE_OP_EQUAL = 0x00000002, 2973fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMPARE_OP_LESS_OR_EQUAL = 0x00000003, 298d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_COMPARE_OP_GREATER = 0x00000004, 299d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_COMPARE_OP_NOT_EQUAL = 0x00000005, 3003fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMPARE_OP_GREATER_OR_EQUAL = 0x00000006, 301d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_COMPARE_OP_ALWAYS = 0x00000007, 302d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 303d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 30465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallenum VkPolygonMode { 30565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_POLYGON_MODE_FILL = 0x00000000, 30665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_POLYGON_MODE_LINE = 0x00000001, 30765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_POLYGON_MODE_POINT = 0x00000002, 308d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 309d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 310d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkFrontFace { 3113fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_FRONT_FACE_COUNTER_CLOCKWISE = 0x00000000, 3123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_FRONT_FACE_CLOCKWISE = 0x00000001, 313d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 314d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 31565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallenum VkBlendFactor { 31665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ZERO = 0x00000000, 31765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE = 0x00000001, 31865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_SRC_COLOR = 0x00000002, 31965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 0x00000003, 32065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_DST_COLOR = 0x00000004, 32165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 0x00000005, 32265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_SRC_ALPHA = 0x00000006, 32365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 0x00000007, 32465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_DST_ALPHA = 0x00000008, 32565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 0x00000009, 32665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_CONSTANT_COLOR = 0x0000000a, 32765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 0x0000000b, 32865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_CONSTANT_ALPHA = 0x0000000c, 32965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 0x0000000d, 33065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 0x0000000e, 33165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_SRC1_COLOR = 0x0000000f, 33265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 0x00000010, 33365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_SRC1_ALPHA = 0x00000011, 33465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 0x00000012, 335d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 336d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 337d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkBlendOp { 338d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BLEND_OP_ADD = 0x00000000, 339d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BLEND_OP_SUBTRACT = 0x00000001, 340d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BLEND_OP_REVERSE_SUBTRACT = 0x00000002, 341d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BLEND_OP_MIN = 0x00000003, 342d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BLEND_OP_MAX = 0x00000004, 343d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 344d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 345d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkStencilOp { 346d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_STENCIL_OP_KEEP = 0x00000000, 347d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_STENCIL_OP_ZERO = 0x00000001, 348d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_STENCIL_OP_REPLACE = 0x00000002, 3493fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_STENCIL_OP_INCREMENT_AND_CLAMP = 0x00000003, 3503fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_STENCIL_OP_DECREMENT_AND_CLAMP = 0x00000004, 351d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_STENCIL_OP_INVERT = 0x00000005, 3523fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_STENCIL_OP_INCREMENT_AND_WRAP = 0x00000006, 3533fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_STENCIL_OP_DECREMENT_AND_WRAP = 0x00000007, 354d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 355d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 356d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkLogicOp { 357d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_CLEAR = 0x00000000, 358d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_AND = 0x00000001, 359d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_AND_REVERSE = 0x00000002, 360d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_COPY = 0x00000003, 361d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_AND_INVERTED = 0x00000004, 3623fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_LOGIC_OP_NO_OP = 0x00000005, 363d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_XOR = 0x00000006, 364d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_OR = 0x00000007, 365d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_NOR = 0x00000008, 3663fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_LOGIC_OP_EQUIVALENT = 0x00000009, 367d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_INVERT = 0x0000000a, 368d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_OR_REVERSE = 0x0000000b, 369d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_COPY_INVERTED = 0x0000000c, 370d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_OR_INVERTED = 0x0000000d, 371d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_NAND = 0x0000000e, 372d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_LOGIC_OP_SET = 0x0000000f, 373d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 374d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3753fbc856120217247c72fb5ed88500000f3881c45Jesse Hallenum VkSystemAllocationScope { 3763e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0x00000000, 3773fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 0x00000001, 3783fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 0x00000002, 3793fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 0x00000003, 3803fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 0x00000004, 38103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall} 38203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall 3833fbc856120217247c72fb5ed88500000f3881c45Jesse Hallenum VkInternalAllocationType { 3843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0x00000000, 385d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 386d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 387d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkPhysicalDeviceType { 388d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PHYSICAL_DEVICE_TYPE_OTHER = 0x00000000, 389d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 0x00000001, 390d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 0x00000002, 391d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 0x00000003, 392d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PHYSICAL_DEVICE_TYPE_CPU = 0x00000004, 393d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 394d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 39565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallenum VkVertexInputRate { 39665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_VERTEX_INPUT_RATE_VERTEX = 0x00000000, 39765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_VERTEX_INPUT_RATE_INSTANCE = 0x00000001, 398d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 399d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 400d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Vulkan format definitions 401d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkFormat { 402f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_UNDEFINED = 0, 403f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R4G4_UNORM_PACK8 = 1, 404f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2, 405f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3, 406f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R5G6B5_UNORM_PACK16 = 4, 407f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B5G6R5_UNORM_PACK16 = 5, 408f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6, 409f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7, 410f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8, 411f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8_UNORM = 9, 412f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8_SNORM = 10, 413f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8_USCALED = 11, 414f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8_SSCALED = 12, 415f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8_UINT = 13, 416f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8_SINT = 14, 417f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8_SRGB = 15, 418f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8_UNORM = 16, 419f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8_SNORM = 17, 420f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8_USCALED = 18, 421f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8_SSCALED = 19, 422f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8_UINT = 20, 423f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8_SINT = 21, 424f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8_SRGB = 22, 425f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8_UNORM = 23, 426f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8_SNORM = 24, 427f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8_USCALED = 25, 428f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8_SSCALED = 26, 429f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8_UINT = 27, 430f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8_SINT = 28, 431f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8_SRGB = 29, 432f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8_UNORM = 30, 433f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8_SNORM = 31, 434f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8_USCALED = 32, 435f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8_SSCALED = 33, 436f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8_UINT = 34, 437f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8_SINT = 35, 438f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8_SRGB = 36, 439f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8A8_UNORM = 37, 440f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8A8_SNORM = 38, 441f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8A8_USCALED = 39, 442f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8A8_SSCALED = 40, 443f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8A8_UINT = 41, 444f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8A8_SINT = 42, 445f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R8G8B8A8_SRGB = 43, 446f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8A8_UNORM = 44, 447f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8A8_SNORM = 45, 448f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8A8_USCALED = 46, 449f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8A8_SSCALED = 47, 450f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8A8_UINT = 48, 451f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8A8_SINT = 49, 452f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B8G8R8A8_SRGB = 50, 453f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51, 454f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52, 455f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53, 456f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54, 457f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55, 458f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56, 459f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57, 460f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58, 461f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59, 462f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60, 463f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61, 464f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62, 465f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63, 466f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64, 467f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65, 468f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66, 469f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67, 470f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68, 471f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69, 472f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16_UNORM = 70, 473f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16_SNORM = 71, 474f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16_USCALED = 72, 475f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16_SSCALED = 73, 476f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16_UINT = 74, 477f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16_SINT = 75, 478f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16_SFLOAT = 76, 479f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16_UNORM = 77, 480f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16_SNORM = 78, 481f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16_USCALED = 79, 482f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16_SSCALED = 80, 483f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16_UINT = 81, 484f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16_SINT = 82, 485f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16_SFLOAT = 83, 486f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16_UNORM = 84, 487f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16_SNORM = 85, 488f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16_USCALED = 86, 489f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16_SSCALED = 87, 490f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16_UINT = 88, 491f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16_SINT = 89, 492f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16_SFLOAT = 90, 493f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16A16_UNORM = 91, 494f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16A16_SNORM = 92, 495f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16A16_USCALED = 93, 496f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16A16_SSCALED = 94, 497f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16A16_UINT = 95, 498f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16A16_SINT = 96, 499f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R16G16B16A16_SFLOAT = 97, 500f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R32_UINT = 98, 501f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R32_SINT = 99, 502f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R32_SFLOAT = 100, 503f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R32G32_UINT = 101, 504f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R32G32_SINT = 102, 505f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R32G32_SFLOAT = 103, 506f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R32G32B32_UINT = 104, 507f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R32G32B32_SINT = 105, 508f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R32G32B32_SFLOAT = 106, 509f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R32G32B32A32_UINT = 107, 510f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R32G32B32A32_SINT = 108, 511f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R32G32B32A32_SFLOAT = 109, 512f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R64_UINT = 110, 513f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R64_SINT = 111, 514f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R64_SFLOAT = 112, 515f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R64G64_UINT = 113, 516f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R64G64_SINT = 114, 517f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R64G64_SFLOAT = 115, 518f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R64G64B64_UINT = 116, 519f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R64G64B64_SINT = 117, 520f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R64G64B64_SFLOAT = 118, 521f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R64G64B64A64_UINT = 119, 522f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R64G64B64A64_SINT = 120, 523f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_R64G64B64A64_SFLOAT = 121, 524f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122, 525f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123, 526f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_D16_UNORM = 124, 527f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_X8_D24_UNORM_PACK32 = 125, 528f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_D32_SFLOAT = 126, 529f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_S8_UINT = 127, 530f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_D16_UNORM_S8_UINT = 128, 531f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_D24_UNORM_S8_UINT = 129, 532f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_D32_SFLOAT_S8_UINT = 130, 533f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131, 534f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132, 535f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133, 536f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134, 537f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC2_UNORM_BLOCK = 135, 538f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC2_SRGB_BLOCK = 136, 539f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC3_UNORM_BLOCK = 137, 540f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC3_SRGB_BLOCK = 138, 541f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC4_UNORM_BLOCK = 139, 542f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC4_SNORM_BLOCK = 140, 543f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC5_UNORM_BLOCK = 141, 544f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC5_SNORM_BLOCK = 142, 545f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC6H_UFLOAT_BLOCK = 143, 546f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC6H_SFLOAT_BLOCK = 144, 547f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC7_UNORM_BLOCK = 145, 548f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_BC7_SRGB_BLOCK = 146, 549f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147, 550f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148, 551f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149, 552f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150, 553f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151, 554f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152, 555f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_EAC_R11_UNORM_BLOCK = 153, 556f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_EAC_R11_SNORM_BLOCK = 154, 557f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155, 558f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156, 559f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157, 560f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158, 561f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159, 562f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160, 563f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161, 564f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162, 565f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163, 566f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164, 567f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165, 568f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166, 569f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167, 570f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168, 571f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169, 572f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170, 573f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171, 574f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172, 575f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173, 576f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174, 577f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175, 578f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176, 579f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177, 580f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178, 581f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179, 582f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180, 583f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181, 584f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182, 585f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183, 586f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184, 587d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 588d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 589d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Structure type enumerant 590d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkStructureType { 591d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_STRUCTURE_TYPE_APPLICATION_INFO = 0, 592c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1, 593c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2, 594c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3, 595c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_SUBMIT_INFO = 4, 596f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5, 597c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6, 598c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7, 599c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8, 600c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9, 6015ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10, 602c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11, 603c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12, 604c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13, 605c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14, 606c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15, 607c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16, 6083e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17, 6093e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18, 6103e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19, 6113e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20, 6123e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21, 6133e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22, 6143e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23, 6153e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24, 6163e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25, 6173e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26, 6183e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27, 6193e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28, 6203e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29, 6213e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30, 6223e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31, 6233e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32, 6243e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33, 625f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34, 6263e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35, 6273e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36, 6283e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37, 6293e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38, 6303e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39, 631f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40, 6323dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41, 6333dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42, 6343dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43, 6353dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44, 6363dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45, 6373dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46, 6383dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47, 6393dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48, 6403e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall 6413e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_swapchain") 642bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000, 643bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001, 6441356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 6453e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_display") 646bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000, 647bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001, 6481356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 6493e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_display_swapchain") 650bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = 1000003000, 651f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 652f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall //@extension("VK_KHR_xlib_surface") 653f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, 654f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 655f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall //@extension("VK_KHR_xcb_surface") 656f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000, 657f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 658f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall //@extension("VK_KHR_wayland_surface") 659f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, 660f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 661f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall //@extension("VK_KHR_mir_surface") 662f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000, 663f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 664f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall //@extension("VK_KHR_android_surface") 665f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, 666f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 667f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall //@extension("VK_KHR_win32_surface") 668f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, 669543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall 670b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu //@extension("VK_ANDROID_native_buffer") 671b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000, 672b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu 673543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall //@extension("VK_EXT_debug_report") 6742676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, 6752676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 6762676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall //@extension("VK_AMD_rasterization_order") 6772676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, 6782676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 6792676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall //@extension("VK_EXT_debug_marker") 6802676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, 6812676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 6822676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall //@extension("VK_EXT_debug_marker") 6832676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, 6842676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 6852676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall //@extension("VK_EXT_debug_marker") 6862676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, 687d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 688d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 68965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallenum VkSubpassContents { 69065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_SUBPASS_CONTENTS_INLINE = 0x00000000, 69165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 0x00000001, 692d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 693d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 694543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hallenum VkPipelineCacheHeaderVersion { 695543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, 696543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall} 697543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall 698bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall@lastUnused(-11) 699d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Error and return codes 700d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallenum VkResult { 701d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Return codes for successful operation execution (positive values) 702bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_SUCCESS = 0, 703bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_NOT_READY = 1, 704bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_TIMEOUT = 2, 705bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_EVENT_SET = 3, 706bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_EVENT_RESET = 4, 707bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_INCOMPLETE = 5, 708d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 7093e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_swapchain") 710bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_SUBOPTIMAL_KHR = 1000001003, 7111356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 712d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Error codes (negative values) 713bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFF, // -1 714bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFE, // -2 715bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_INITIALIZATION_FAILED = 0xFFFFFFFD, // -3 716bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_DEVICE_LOST = 0xFFFFFFFC, // -4 717bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFFB, // -5 718bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_LAYER_NOT_PRESENT = 0xFFFFFFFA, // -6 719bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_EXTENSION_NOT_PRESENT = 0xFFFFFFF9, // -7 720bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_FEATURE_NOT_PRESENT = 0xFFFFFFF8, // -8 721bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFF7, // -9 722bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_TOO_MANY_OBJECTS = 0xFFFFFFF6, // -10 723bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_FORMAT_NOT_SUPPORTED = 0xFFFFFFF5, // -11 7241356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 7253e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_surface") 726bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_SURFACE_LOST_KHR = 0xC4653600, // -1000000000 727a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 728563380d389732337a84e7455caa01ec955ebee30Jesse Hall //@extension("VK_KHR_surface") 729563380d389732337a84e7455caa01ec955ebee30Jesse Hall VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC46535FF, // -1000008001 730563380d389732337a84e7455caa01ec955ebee30Jesse Hall 7313e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_swapchain") 732bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_OUT_OF_DATE_KHR = 0xC4653214, // -1000001004 7331356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 7343e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall //@extension("VK_KHR_display_swapchain") 735bd88884111a3ef38322741c15de9bd215f7a7eb9Jesse Hall VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC4652A47, // -1000003001 7361356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 737543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall //@extension("VK_EXT_debug_report") 738543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall VK_ERROR_VALIDATION_FAILED_EXT = 0xC4650B07, // -1000011001 7392676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 7402676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall //@extension("VK_NV_glsl_shader") 7412676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VK_ERROR_INVALID_SHADER_NV = 0xC4650720, // -1000012000 7425ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 7435ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 7445ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallenum VkDynamicState { 7455ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_VIEWPORT = 0x00000000, 7465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_SCISSOR = 0x00000001, 7475ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_LINE_WIDTH = 0x00000002, 7485ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_DEPTH_BIAS = 0x00000003, 7495ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_BLEND_CONSTANTS = 0x00000004, 7505ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_DEPTH_BOUNDS = 0x00000005, 7515ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 0x00000006, 7525ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 0x00000007, 7535ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_DYNAMIC_STATE_STENCIL_REFERENCE = 0x00000008, 754d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 755d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 756523db34c1308c066ff9fe0a301ba6ed09f82b8aeJesse Hall@extension("VK_KHR_surface") 75788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentineenum VkPresentModeKHR { 75888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_PRESENT_MODE_IMMEDIATE_KHR = 0x00000000, 75988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001, 76088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_PRESENT_MODE_FIFO_KHR = 0x00000002, 76103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003, 76288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 76388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 764523db34c1308c066ff9fe0a301ba6ed09f82b8aeJesse Hall@extension("VK_KHR_surface") 76588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentineenum VkColorSpaceKHR { 76688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0x00000000, 76788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 768d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 769715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@extension("VK_EXT_debug_report") 770715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hallenum VkDebugReportObjectTypeEXT { 771715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0, 772715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1, 773715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2, 774715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3, 775715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4, 776715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5, 777715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6, 778715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7, 779715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8, 780715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9, 781715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10, 782715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11, 783715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12, 784715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13, 785715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14, 786715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15, 787715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16, 788715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17, 789715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18, 790715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19, 791715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20, 792715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21, 793715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22, 794715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23, 795715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24, 796715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25, 797715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26, 798715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27, 799715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28, 800715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall} 801715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall 802715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@extension("VK_EXT_debug_report") 803715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hallenum VkDebugReportErrorEXT { 804715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_ERROR_NONE_EXT = 0, 805715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT = 1, 806715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall} 807715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall 8082676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_AMD_rasterization_order") 8092676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hallenum VkRasterizationOrderAMD { 8102676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VK_RASTERIZATION_ORDER_STRICT_AMD = 0, 8112676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, 8122676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall} 8132676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 814715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall 815d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////////// 816d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Bitfields // 817d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////////// 818d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 819d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Queue capabilities 820d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkQueueFlags 821d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkQueueFlagBits { 822d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUEUE_GRAPHICS_BIT = 0x00000001, /// Queue supports graphics operations 823d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUEUE_COMPUTE_BIT = 0x00000002, /// Queue supports compute operations 82465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_QUEUE_TRANSFER_BIT = 0x00000004, /// Queue supports transfer operations 825b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, /// Queue supports sparse resource memory management operations 826d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 827d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 828d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Memory properties passed into vkAllocMemory(). 829d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkMemoryPropertyFlags 830d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkMemoryPropertyFlagBits { 831d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001, 832d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002, 833d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004, 834d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008, 835d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010, 836d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 837d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 838d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Memory heap flags 839d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkMemoryHeapFlags 840d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkMemoryHeapFlagBits { 841d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001, 842d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 843d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 8443e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall/// Access flags 8453e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Halltype VkFlags VkAccessFlags 8463e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hallbitfield VkAccessFlagBits { 8473e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001, 8483e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_INDEX_READ_BIT = 0x00000002, 8493e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004, 8503e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_UNIFORM_READ_BIT = 0x00000008, 8513e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010, 8523e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_SHADER_READ_BIT = 0x00000020, 8533e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_SHADER_WRITE_BIT = 0x00000040, 8543e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080, 8553e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100, 8563e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200, 8573e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400, 8583e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_TRANSFER_READ_BIT = 0x00000800, 8593e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000, 8603e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_HOST_READ_BIT = 0x00002000, 8613e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_HOST_WRITE_BIT = 0x00004000, 8623e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_MEMORY_READ_BIT = 0x00008000, 8633e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, 864d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 865d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 866d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Buffer usage flags 867d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkBufferUsageFlags 868d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkBufferUsageFlagBits { 8693fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations 8703fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations 871d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, /// Can be used as TBO 872d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, /// Can be used as IBO 873d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, /// Can be used as UBO 874d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, /// Can be used as SSBO 875d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, /// Can be used as source of fixed function index fetch (index buffer) 876d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, /// Can be used as source of fixed function vertex fetch (VBO) 877d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, /// Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer) 878d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 879d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 880d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Buffer creation flags 881d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkBufferCreateFlags 882d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkBufferCreateFlagBits { 8835ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Buffer should support sparse backing 884d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency 885d27f6aad91e6cdb7a867c432f66a852acc077897Jesse 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 886d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 887d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 888d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Shader stage flags 889d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkShaderStageFlags 890d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkShaderStageFlagBits { 891d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHADER_STAGE_VERTEX_BIT = 0x00000001, 892ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002, 893ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004, 894d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008, 895d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010, 896d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020, 897c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F, 898d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 899d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_SHADER_STAGE_ALL = 0x7FFFFFFF, 900d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 901d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 902fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall/// Descriptor pool create flags 903d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkDescriptorPoolCreateFlags 904d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkDescriptorPoolCreateFlagBits { 905fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001, 906fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall} 907fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall 908fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall/// Descriptor pool reset flags 909d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkDescriptorPoolResetFlags 910a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkDescriptorPoolResetFlagBits { 911a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 912fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall 913d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Image usage flags 914d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkImageUsageFlags 915d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkImageUsageFlagBits { 9163fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations 9173fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations 918d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types) 919d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, /// Can be used as storage image (STORAGE_IMAGE descriptor type) 920d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, /// Can be used as framebuffer color attachment 9215ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment 922d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, /// Image data not needed outside of rendering 923d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, /// Can be used as framebuffer input attachment 924d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 925d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 926d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Image creation flags 927d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkImageCreateFlags 928d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkImageCreateFlagBits { 9295ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Image should support sparse backing 930d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Image should support sparse backing with partial residency 931d27f6aad91e6cdb7a867c432f66a852acc077897Jesse 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 9325ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image 9335ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010, /// Allows creating image views with cube type from the created image 934d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 935d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 936b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall/// Image view creation flags 937d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkImageViewCreateFlags 938b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall//bitfield VkImageViewCreateFlagBits { 939b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall//} 940d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 941d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Pipeline creation flags 942d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkPipelineCreateFlags 943d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkPipelineCreateFlagBits { 944d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001, 945d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002, 946d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004, 947d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 948d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 94965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall/// Color component flags 95065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Halltype VkFlags VkColorComponentFlags 95165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallbitfield VkColorComponentFlagBits { 95265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COLOR_COMPONENT_R_BIT = 0x00000001, 95365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COLOR_COMPONENT_G_BIT = 0x00000002, 95465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COLOR_COMPONENT_B_BIT = 0x00000004, 95565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_COLOR_COMPONENT_A_BIT = 0x00000008, 956d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 957d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 958d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Fence creation flags 959d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkFenceCreateFlags 960d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkFenceCreateFlagBits { 961d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001, 962d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 963d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 964d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Semaphore creation flags 965d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkSemaphoreCreateFlags 966a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkSemaphoreCreateFlagBits { 967a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 968d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 969d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Format capability flags 970d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkFormatFeatureFlags 971d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkFormatFeatureFlagBits { 972d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types) 973d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, /// Format can be used for storage images (STORAGE_IMAGE descriptor type) 974d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, /// Format supports atomic operations in case it's used for storage images 975d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, /// Format can be used for uniform texel buffers (TBOs) 976d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, /// Format can be used for storage texel buffers (IBOs) 977d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, /// Format supports atomic operations in case it's used for storage texel buffers 978d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, /// Format can be used for vertex buffers (VBOs) 979d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, /// Format can be used for color attachment images 980d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, /// Format supports blending in case it's used for color attachment images 981d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, /// Format can be used for depth/stencil attachment images 9823fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, /// Format can be used as the source image of blits with vkCommandBlitImage 9833fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800, /// Format can be used as the destination image of blits with vkCommandBlitImage 98433faaad096afbd0b103bd1284ce5b78cce74aa01Jesse Hall VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000, 9852676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 9862676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall //@extension("VK_IMG_filter_cubic") 9872676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000, 988d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 989d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 990d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Query control flags 991d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkQueryControlFlags 992d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkQueryControlFlagBits { 99365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001, 994d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 995d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 996d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Query result flags 997d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkQueryResultFlags 998d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkQueryResultFlagBits { 999d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_RESULT_64_BIT = 0x00000001, /// Results of the queries are written to the destination buffer as 64-bit values 1000d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_RESULT_WAIT_BIT = 0x00000002, /// Results of the queries are waited on before proceeding with the result copy 1001d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, /// Besides the results of the query, the availability of the results is also written 1002d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, /// Copy the partial results of the query even if the final results aren't available 1003d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1004d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1005d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Shader module creation flags 1006d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkShaderModuleCreateFlags 1007a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkShaderModuleCreateFlagBits { 1008a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1009d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1010d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Event creation flags 1011d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkEventCreateFlags 1012a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkEventCreateFlagBits { 1013a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1014d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1015a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall/// Command buffer usage flags 10163fbc856120217247c72fb5ed88500000f3881c45Jesse Halltype VkFlags VkCommandBufferUsageFlags 10173fbc856120217247c72fb5ed88500000f3881c45Jesse Hallbitfield VkCommandBufferUsageFlagBits { 10183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001, 10193fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002, 10203fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004, 1021d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1022d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1023d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Pipeline statistics flags 1024d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkQueryPipelineStatisticFlags 1025d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkQueryPipelineStatisticFlagBits { 1026ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, /// Optional 1027ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, /// Optional 1028ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, /// Optional 1029ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, /// Optional 1030ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, /// Optional 1031ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, /// Optional 1032ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, /// Optional 1033ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, /// Optional 1034ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, /// Optional 1035ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, /// Optional 1036ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, /// Optional 1037d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1038d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1039d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Memory mapping flags 1040d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkMemoryMapFlags 1041a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkMemoryMapFlagBits { 1042a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1043d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1044d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Bitfield of image aspects 1045d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkImageAspectFlags 1046d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkImageAspectFlagBits { 1047d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001, 1048d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002, 1049d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004, 1050d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008, 1051d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1052d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1053d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Sparse memory bind flags 1054d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkSparseMemoryBindFlags 1055091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hallbitfield VkSparseMemoryBindFlagBits { 1056091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001, 1057091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall} 1058d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1059d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Sparse image memory requirements flags 1060d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkSparseImageFormatFlags 1061d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkSparseImageFormatFlagBits { 1062b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, /// Image uses a single miptail region for all array slices 1063b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse 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. 1064b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, /// Image uses a non-standard sparse block size 1065d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1066d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1067d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Pipeline stages 1068d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkPipelineStageFlags 1069d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkPipelineStageFlagBits { 1070d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, /// Before subsequent commands are processed 1071d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, /// Draw/DispatchIndirect command fetch 1072d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, /// Vertex/index fetch 1073d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, /// Vertex shading 1074ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, /// Tessellation control shading 1075ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, /// Tessellation evaluation shading 1076d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, /// Geometry shading 1077d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, /// Fragment shading 1078d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, /// Early fragment (depth/stencil) tests 1079d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, /// Late fragment (depth/stencil) tests 1080d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, /// Color attachment writes 1081d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, /// Compute shading 1082d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, /// Transfer/copy operations 1083543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000, 1084543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, /// Indicates host (CPU) is a source/sink of the dependency 1085d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1086543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, /// All stages of the graphics pipeline 1087543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, /// All graphics, compute, copy, and transition commands 10885ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 10895ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 10905ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall/// Render pass attachment description flags 1091d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkAttachmentDescriptionFlags 1092d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkAttachmentDescriptionFlagBits { 10935ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001, /// The attachment may alias physical memory of another attachment in the same renderpass 1094d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1095d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1096d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Subpass description flags 1097d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkSubpassDescriptionFlags 1098d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkSubpassDescriptionFlagBits { 1099d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1100d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1101d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Command pool creation flags 11023fbc856120217247c72fb5ed88500000f3881c45Jesse Halltype VkFlags VkCommandPoolCreateFlags 11033fbc856120217247c72fb5ed88500000f3881c45Jesse Hallbitfield VkCommandPoolCreateFlagBits { 11043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, /// Command buffers have a short lifetime 11053fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, /// Command buffers may release their memory individually 1106d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1107d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1108d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Command pool reset flags 11093fbc856120217247c72fb5ed88500000f3881c45Jesse Halltype VkFlags VkCommandPoolResetFlags 11103fbc856120217247c72fb5ed88500000f3881c45Jesse Hallbitfield VkCommandPoolResetFlagBits { 11113fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the pool 1112d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1113d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 11143fbc856120217247c72fb5ed88500000f3881c45Jesse Halltype VkFlags VkCommandBufferResetFlags 11153fbc856120217247c72fb5ed88500000f3881c45Jesse Hallbitfield VkCommandBufferResetFlagBits { 11163fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the buffer 11175ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 11185ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 1119d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkSampleCountFlags 1120d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkSampleCountFlagBits { 11215ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_1_BIT = 0x00000001, 11225ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_2_BIT = 0x00000002, 11235ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_4_BIT = 0x00000004, 11245ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_8_BIT = 0x00000008, 11255ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_16_BIT = 0x00000010, 11265ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_32_BIT = 0x00000020, 11275ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_SAMPLE_COUNT_64_BIT = 0x00000040, 11285ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 11295ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 1130d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkStencilFaceFlags 1131d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkStencilFaceFlagBits { 11325ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_STENCIL_FACE_FRONT_BIT = 0x00000001, /// Front face 11335ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VK_STENCIL_FACE_BACK_BIT = 0x00000002, /// Back face 1134c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_STENCIL_FRONT_AND_BACK = 0x00000003, 1135d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1136d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1137a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Instance creation flags 1138a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkInstanceCreateFlags 1139a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkInstanceCreateFlagBits { 1140a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1141a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1142a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Device creation flags 1143a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkDeviceCreateFlags 1144a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkDeviceCreateFlagBits { 1145a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1146a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1147a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Device queue creation flags 1148a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkDeviceQueueCreateFlags 1149a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkDeviceQueueCreateFlagBits { 1150a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1151a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1152a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Query pool creation flags 1153a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkQueryPoolCreateFlags 1154a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkQueryPoolCreateFlagBits { 1155a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1156a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1157a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Buffer view creation flags 1158a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkBufferViewCreateFlags 1159a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkBufferViewCreateFlagBits { 1160a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1161a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1162a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Pipeline cache creation flags 1163a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineCacheCreateFlags 1164a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineCacheCreateFlagBits { 1165a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1166a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1167a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Pipeline shader stage creation flags 1168a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineShaderStageCreateFlags 1169a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineShaderStageCreateFlagBits { 1170a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1171a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1172a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Descriptor set layout creation flags 1173a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkDescriptorSetLayoutCreateFlags 1174a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkDescriptorSetLayoutCreateFlagBits { 1175a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1176a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1177a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Pipeline vertex input state creation flags 1178a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineVertexInputStateCreateFlags 1179a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineVertexInputStateCreateFlagBits { 1180a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1181a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1182a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Pipeline input assembly state creation flags 1183a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineInputAssemblyStateCreateFlags 1184a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineInputAssemblyStateCreateFlagBits { 1185a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1186a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1187a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Tessellation state creation flags 1188a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineTessellationStateCreateFlags 1189a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineTessellationStateCreateFlagBits { 1190a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1191a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1192a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Viewport state creation flags 1193a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineViewportStateCreateFlags 1194a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineViewportStateCreateFlagBits { 1195a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1196a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 11973fbc856120217247c72fb5ed88500000f3881c45Jesse Hall/// Rasterization state creation flags 11983fbc856120217247c72fb5ed88500000f3881c45Jesse Halltype VkFlags VkPipelineRasterizationStateCreateFlags 11993fbc856120217247c72fb5ed88500000f3881c45Jesse Hall//bitfield VkPipelineRasterizationStateCreateFlagBits { 1200a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1201a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1202a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Multisample state creation flags 1203a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineMultisampleStateCreateFlags 1204a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineMultisampleStateCreateFlagBits { 1205a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1206a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1207a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Color blend state creation flags 1208a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineColorBlendStateCreateFlags 1209a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineColorBlendStateCreateFlagBits { 1210a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1211a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1212a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Depth/stencil state creation flags 1213a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineDepthStencilStateCreateFlags 1214a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineDepthStencilStateCreateFlagBits { 1215a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1216a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1217a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Dynamic state creation flags 1218a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineDynamicStateCreateFlags 1219a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineDynamicStateCreateFlagBits { 1220a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1221a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1222a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Pipeline layout creation flags 1223a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkPipelineLayoutCreateFlags 1224a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkPipelineLayoutCreateFlagBits { 1225a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1226a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1227a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Sampler creation flags 1228a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkSamplerCreateFlags 1229a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkSamplerCreateFlagBits { 1230a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1231a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1232a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Render pass creation flags 1233a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkRenderPassCreateFlags 1234a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkRenderPassCreateFlagBits { 1235a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1236a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1237a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall/// Framebuffer creation flags 1238a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkFramebufferCreateFlags 1239a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//bitfield VkFramebufferCreateFlagBits { 1240a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall//} 1241a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1242dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall/// Dependency flags 1243dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Halltype VkFlags VkDependencyFlags 1244dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hallbitfield VkDependencyFlagBits { 1245dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VK_DEPENDENCY_BY_REGION_BIT = 0x00000001, 1246dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall} 1247dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall 1248c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall/// Cull mode flags 1249c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Halltype VkFlags VkCullModeFlags 1250c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hallbitfield VkCullModeFlagBits { 1251c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_CULL_MODE_NONE = 0x00000000, 1252c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_CULL_MODE_FRONT_BIT = 0x00000001, 1253c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_CULL_MODE_BACK_BIT = 0x00000002, 1254c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VK_CULL_MODE_FRONT_AND_BACK = 0x00000003, 1255c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall} 1256c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall 1257523db34c1308c066ff9fe0a301ba6ed09f82b8aeJesse Hall@extension("VK_KHR_surface") 1258d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkSurfaceTransformFlagsKHR 1259523db34c1308c066ff9fe0a301ba6ed09f82b8aeJesse Hall@extension("VK_KHR_surface") 1260d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkSurfaceTransformFlagBitsKHR { 1261f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001, 12629ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002, 12639ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004, 12649ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008, 12659ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010, 12669ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020, 12679ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040, 12689ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080, 12699ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100, 127088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 1271d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1272523db34c1308c066ff9fe0a301ba6ed09f82b8aeJesse Hall@extension("VK_KHR_surface") 1273a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Halltype VkFlags VkCompositeAlphaFlagsKHR 1274523db34c1308c066ff9fe0a301ba6ed09f82b8aeJesse Hall@extension("VK_KHR_surface") 1275a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallbitfield VkCompositeAlphaFlagBitsKHR { 1276a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, 1277a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002, 1278a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004, 1279a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008, 1280a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 1281a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1282f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall@extension("VK_KHR_swapchain") 1283f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Halltype VkFlags VkSwapchainCreateFlagsKHR 1284f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall//@extension("VK_KHR_swapchain") 1285f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall//bitfield VkSwapchainCreateFlagBitsKHR { 1286f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall//} 1287f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall 12883e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 1289d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Halltype VkFlags VkDisplayPlaneAlphaFlagsKHR 12903e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 1291d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallbitfield VkDisplayPlaneAlphaFlagBitsKHR { 1292f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, 1293f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002, 1294f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004, 1295f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008, 12961356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 12971356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 1298f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall@extension("VK_KHR_display") 1299f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Halltype VkFlags VkDisplaySurfaceCreateFlagsKHR 1300f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall//@extension("VK_KHR_display") 1301f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall//bitfield VkDisplaySurfaceCreateFlagBitsKHR { 1302f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall//} 1303f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall 13049ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall@extension("VK_KHR_display") 13059ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Halltype VkFlags VkDisplayModeCreateFlagsKHR 13069ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall//@extension("VK_KHR_display") 13079ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall//bitfield VkDisplayModeCreateFlagBitsKHR { 13089ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall//} 13099ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall 1310f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall@extension("VK_KHR_xlib_surface") 1311f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Halltype VkFlags VkXlibSurfaceCreateFlagsKHR 1312f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//@extension("VK_KHR_xlib_surface") 1313f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//bitfield VkXlibSurfaceCreateFlagBitsKHR { 1314f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//} 1315f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 1316f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall@extension("VK_KHR_xcb_surface") 1317f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Halltype VkFlags VkXcbSurfaceCreateFlagsKHR 1318f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//@extension("VK_KHR_xcb_surface") 1319f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//bitfield VkXcbSurfaceCreateFlagBitsKHR { 1320f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//} 1321f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 1322f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall@extension("VK_KHR_wayland_surface") 1323f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Halltype VkFlags VkWaylandSurfaceCreateFlagsKHR 1324f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//@extension("VK_KHR_wayland_surface") 1325f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//bitfield VkWaylandSurfaceCreateFlagBitsKHR { 1326f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//} 1327f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 1328f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall@extension("VK_KHR_mir_surface") 1329f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Halltype VkFlags VkMirSurfaceCreateFlagsKHR 1330f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//@extension("VK_KHR_mir_surface") 1331f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//bitfield VkMirSurfaceCreateFlagBitsKHR { 1332f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//} 1333f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 1334f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall@extension("VK_KHR_android_surface") 1335f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Halltype VkFlags VkAndroidSurfaceCreateFlagsKHR 1336f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//@extension("VK_KHR_android_surface") 1337f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//bitfield VkAndroidSurfaceCreateFlagBitsKHR { 1338f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//} 1339f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 1340f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall@extension("VK_KHR_win32_surface") 1341f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Halltype VkFlags VkWin32SurfaceCreateFlagsKHR 1342f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//@extension("VK_KHR_win32_surface") 1343f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//bitfield VkWin32SurfaceCreateFlagBitsKHR { 1344f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall//} 1345f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 1346715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@extension("VK_EXT_debug_report") 1347715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Halltype VkFlags VkDebugReportFlagsEXT 1348715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@extension("VK_EXT_debug_report") 1349715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hallbitfield VkDebugReportFlagBitsEXT { 1350e2948d83f352b9a093252a06757f76a88f5355d3Jesse Hall VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001, 1351e2948d83f352b9a093252a06757f76a88f5355d3Jesse Hall VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002, 1352e2948d83f352b9a093252a06757f76a88f5355d3Jesse Hall VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004, 1353715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008, 1354715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010, 1355715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall} 1356715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall 13571356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 1358d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall////////////////// 1359d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Structures // 1360d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall////////////////// 1361d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1362d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkOffset2D { 1363d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 x 1364d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 y 1365d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1366d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1367d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkOffset3D { 1368d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 x 1369d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 y 1370d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 z 1371d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1372d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1373d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkExtent2D { 13743dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 width 13753dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 height 1376d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1377d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1378d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkExtent3D { 13793dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 width 13803dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 height 13813dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 depth 1382d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1383d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1384d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkViewport { 138565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall f32 x 138665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall f32 y 1387d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 width 1388d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 height 1389d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 minDepth 1390d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 maxDepth 1391d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1392d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1393d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkRect2D { 1394d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkOffset2D offset 1395d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent2D extent 1396d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1397d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1398a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hallclass VkClearRect { 1399a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VkRect2D rect 1400a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall u32 baseArrayLayer 14013fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 layerCount 1402d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1403d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 140465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallclass VkComponentMapping { 140565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkComponentSwizzle r 140665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkComponentSwizzle g 140765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkComponentSwizzle b 140865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkComponentSwizzle a 1409d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1410d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1411d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPhysicalDeviceProperties { 1412d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 apiVersion 1413d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 driverVersion 141465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 vendorID 141565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 deviceID 1416d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDeviceType deviceType 141765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] deviceName 141865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u8[VK_UUID_SIZE] pipelineCacheUUID 14195ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkPhysicalDeviceLimits limits 14205ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkPhysicalDeviceSparseProperties sparseProperties 1421d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1422d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1423d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkExtensionProperties { 142465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall char[VK_MAX_EXTENSION_NAME_SIZE] extensionName /// extension name 1425d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 specVersion /// version of the extension specification implemented 1426d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1427d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1428d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkLayerProperties { 142965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall char[VK_MAX_EXTENSION_NAME_SIZE] layerName /// layer name 14303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 specVersion /// version of the layer specification implemented 14313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 implementationVersion /// build or release version of the layer's library 143265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall char[VK_MAX_DESCRIPTION_SIZE] description /// Free-form description of the layer 1433d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1434d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1435a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hallclass VkSubmitInfo { 143603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO 143703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall const void* pNext /// Next structure in chain 143803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 waitSemaphoreCount 1439a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall const VkSemaphore* pWaitSemaphores 1440543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall const VkPipelineStageFlags* pWaitDstStageMask 144103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 commandBufferCount 14423fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkCommandBuffer* pCommandBuffers 144303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 signalSemaphoreCount 1444a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall const VkSemaphore* pSignalSemaphores 1445a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall} 1446a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall 1447d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkApplicationInfo { 1448d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO 1449d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Next structure in chain 14503fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const char* pApplicationName 14513fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 applicationVersion 1452d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* pEngineName 1453d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 engineVersion 1454d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 apiVersion 1455d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1456d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 14573fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkAllocationCallbacks { 1458d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall void* pUserData 14593fbc856120217247c72fb5ed88500000f3881c45Jesse Hall PFN_vkAllocationFunction pfnAllocation 14603fbc856120217247c72fb5ed88500000f3881c45Jesse Hall PFN_vkReallocationFunction pfnReallocation 1461d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall PFN_vkFreeFunction pfnFree 14623fbc856120217247c72fb5ed88500000f3881c45Jesse Hall PFN_vkInternalAllocationNotification pfnInternalAllocation 146303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall PFN_vkInternalFreeNotification pfnInternalFree 1464d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1465d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1466d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkDeviceQueueCreateInfo { 14675ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkStructureType sStype /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO 14685ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const void* pNext /// Pointer to next structure 1469a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDeviceQueueCreateFlags flags 1470d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queueFamilyIndex 1471dba27f71fad236f08deae3d0b987e83700b32f94Jesse Hall u32 queueCount 1472fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall const f32* pQueuePriorities 1473d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1474d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1475d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkDeviceCreateInfo { 1476d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO 1477d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1478a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDeviceCreateFlags flags 1479dba27f71fad236f08deae3d0b987e83700b32f94Jesse Hall u32 queueCreateInfoCount 1480dba27f71fad236f08deae3d0b987e83700b32f94Jesse Hall const VkDeviceQueueCreateInfo* pQueueCreateInfos 14813dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 enabledLayerCount 1482d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled 14833dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 enabledExtensionCount 1484d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* const* ppEnabledExtensionNames 1485d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPhysicalDeviceFeatures* pEnabledFeatures 1486d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1487d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1488d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkInstanceCreateInfo { 1489d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO 1490d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1491a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkInstanceCreateFlags flags 14923fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkApplicationInfo* pApplicationInfo 14933dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 enabledLayerCount 1494d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled 14953dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 enabledExtensionCount 1496d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* const* ppEnabledExtensionNames /// Extension names to be enabled 1497d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1498d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 14995ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallclass VkQueueFamilyProperties { 1500d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueueFlags queueFlags /// Queue flags 1501d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queueCount 1502acfa53409aa45de2c12f10617222e0d593e8f2dfJesse Hall u32 timestampValidBits 150365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkExtent3D minImageTransferGranularity 1504d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1505d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1506d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPhysicalDeviceMemoryProperties { 1507d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 memoryTypeCount 1508d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryType[VK_MAX_MEMORY_TYPES] memoryTypes 1509d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 memoryHeapCount 1510d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryHeap[VK_MAX_MEMORY_HEAPS] memoryHeaps 1511d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1512d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 15133fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkMemoryAllocateInfo { 1514f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO 1515d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 15165ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize allocationSize /// Size of memory allocation 1517d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 memoryTypeIndex /// Index of the of the memory type to allocate from 1518d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1519d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1520d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkMemoryRequirements { 15215ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size /// Specified in bytes 15225ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize alignment /// Specified in bytes 1523d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 memoryTypeBits /// Bitfield of the allowed memory type indices into memoryTypes[] for this object 1524d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1525d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1526d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSparseImageFormatProperties { 15273e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkImageAspectFlagBits aspectMask 1528d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D imageGranularity 1529d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSparseImageFormatFlags flags 1530d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1531d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1532d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSparseImageMemoryRequirements { 1533b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkSparseImageFormatProperties formatProperties 1534f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall u32 imageMipTailFirstLod 15355ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment 15365ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment 15375ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment 1538d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1539d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1540d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkMemoryType { 1541d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryPropertyFlags propertyFlags /// Memory properties of this memory type 1542d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 heapIndex /// Index of the memory heap allocations of this memory type are taken from 1543d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1544d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1545d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkMemoryHeap { 15465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size /// Available memory in the heap 1547d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryHeapFlags flags /// Flags for the heap 1548d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1549d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1550d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkMappedMemoryRange { 1551d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE 1552d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 15533fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory /// Mapped memory object 15545ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset /// Offset within the mapped memory the range starts from 15555ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size /// Size of the range within the mapped memory 1556d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1557d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1558d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkFormatProperties { 1559d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormatFeatureFlags linearTilingFeatures /// Format features in case of linear tiling 1560d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormatFeatureFlags optimalTilingFeatures /// Format features in case of optimal tiling 15615ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkFormatFeatureFlags bufferFeatures /// Format features supported by buffers 1562d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1563d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1564d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageFormatProperties { 15655ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkExtent3D maxExtent /// max image dimensions for this resource type 15665ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 maxMipLevels /// max number of mipmap levels for this resource type 1567a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall u32 maxArrayLayers /// max array layers for this resource type 15685ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkSampleCountFlags sampleCounts /// supported sample counts for this resource type 15695ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize maxResourceSize /// max size (in bytes) of this resource type 15705ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 15715ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 1572a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hallclass VkDescriptorImageInfo { 1573a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VkSampler sampler 1574a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VkImageView imageView 1575a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall VkImageLayout imageLayout 1576a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall} 1577a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall 15785ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallclass VkDescriptorBufferInfo { 15795ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBuffer buffer /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC] 15805ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset /// Base offset from buffer start in bytes to update in the descriptor set. 15815ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize range /// Size in bytes of the buffer resource for this descriptor update. 1582d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1583d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1584d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkWriteDescriptorSet { 1585d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET 1586d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 15873fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDescriptorSet dstSet /// Destination descriptor set 15883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstBinding /// Binding within the destination descriptor set to write 15893fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstArrayElement /// Array element within the destination binding to write 159003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 descriptorCount /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>) 1591d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDescriptorType descriptorType /// Descriptor type to write (determines which fields of the array pointed by <pDescriptors> are going to be used) 1592fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall const VkDescriptorImageInfo* pImageInfo 1593fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall const VkDescriptorBufferInfo* pBufferInfo 1594fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall const VkBufferView* pTexelBufferView 1595d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1596d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1597d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkCopyDescriptorSet { 1598d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET 1599d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1600d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDescriptorSet srcSet /// Source descriptor set 1601d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 srcBinding /// Binding within the source descriptor set to copy from 1602d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 srcArrayElement /// Array element within the source binding to copy from 16033fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDescriptorSet dstSet /// Destination descriptor set 16043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstBinding /// Binding within the destination descriptor set to copy to 16053fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstArrayElement /// Array element within the destination binding to copy to 160603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 descriptorCount /// Number of descriptors to copy 1607d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1608d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1609d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkBufferCreateInfo { 1610d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO 1611d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure. 1612a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkBufferCreateFlags flags /// Buffer creation flags 16135ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size /// Specified in bytes 1614d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBufferUsageFlags usage /// Buffer usage flags 1615d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSharingMode sharingMode 161603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 queueFamilyIndexCount 1617d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const u32* pQueueFamilyIndices 1618d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1619d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1620d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkBufferViewCreateInfo { 1621d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO 1622d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure. 1623a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkBufferViewCreateFlags flags 1624d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer 1625d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format /// Optionally specifies format of elements 16265ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset /// Specified in bytes 16275ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize range /// View size specified in bytes 1628d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1629d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1630d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageSubresource { 16313e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkImageAspectFlagBits aspectMask 1632d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 mipLevel 16335ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 arrayLayer 1634d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1635d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1636d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageSubresourceRange { 16375ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkImageAspectFlags aspectMask 1638d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 baseMipLevel 16393fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 levelCount 16405ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 baseArrayLayer 16413fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 layerCount 1642d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1643d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1644d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkMemoryBarrier { 1645d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER 1646d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure. 16473e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags srcAccessMask 16483e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags dstAccessMask 1649d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1650d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1651d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkBufferMemoryBarrier { 1652d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER 1653d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure. 16543e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags srcAccessMask 16553e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags dstAccessMask 1656d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 srcQueueFamilyIndex /// Queue family to transition ownership from 16573fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstQueueFamilyIndex /// Queue family to transition ownership to 1658d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer /// Buffer to sync 16595ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset /// Offset within the buffer to sync 16605ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size /// Amount of bytes to sync 1661d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1662d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1663d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageMemoryBarrier { 1664d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER 1665d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure. 16663e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags srcAccessMask 16673e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags dstAccessMask 1668d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout oldLayout /// Current layout of the image 1669d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout newLayout /// New layout to transition the image to 1670d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 srcQueueFamilyIndex /// Queue family to transition ownership from 16713fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstQueueFamilyIndex /// Queue family to transition ownership to 1672d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image /// Image to sync 1673d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageSubresourceRange subresourceRange /// Subresource range to sync 1674d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1675d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1676d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageCreateInfo { 1677d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO 1678d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure. 1679a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkImageCreateFlags flags /// Image creation flags 1680d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageType imageType 1681d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format 1682d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D extent 1683d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 mipLevels 1684a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall u32 arrayLayers 1685091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlagBits samples 1686d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageTiling tiling 1687d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageUsageFlags usage /// Image usage flags 1688d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSharingMode sharingMode /// Cross-queue-family sharing mode 168903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 queueFamilyIndexCount /// Number of queue families to share across 1690d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const u32* pQueueFamilyIndices /// Array of queue family indices to share across 16915ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkImageLayout initialLayout /// Initial image layout for all subresources 1692d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1693d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1694d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSubresourceLayout { 16955ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset /// Specified in bytes 16965ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size /// Specified in bytes 16975ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize rowPitch /// Specified in bytes 1698543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall VkDeviceSize arrayPitch /// Specified in bytes 16995ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize depthPitch /// Specified in bytes 1700d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1701d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1702d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageViewCreateInfo { 1703d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO 1704d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1705a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkImageViewCreateFlags flags 1706d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image 1707d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageViewType viewType 1708d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format 170965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkComponentMapping components 1710d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageSubresourceRange subresourceRange 1711d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1712d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1713d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkBufferCopy { 17145ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize srcOffset /// Specified in bytes 17153fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize dstOffset /// Specified in bytes 1716b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkDeviceSize size /// Specified in bytes 1717d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1718d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1719a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkSparseMemoryBind { 1720b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkDeviceSize resourceOffset /// Specified in bytes 1721b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkDeviceSize size /// Specified in bytes 17223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory 17233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize memoryOffset /// Specified in bytes 1724d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSparseMemoryBindFlags flags 1725d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1726d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1727a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkSparseImageMemoryBind { 1728d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageSubresource subresource 1729d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkOffset3D offset 1730d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D extent 17313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory 17323fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize memoryOffset /// Specified in bytes 1733d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSparseMemoryBindFlags flags 1734d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1735d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1736a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkSparseBufferMemoryBindInfo { 1737a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkBuffer buffer 1738a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 bindCount 1739a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSparseMemoryBind* pBinds 1740a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 1741a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1742a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkSparseImageOpaqueMemoryBindInfo { 1743a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkImage image 1744a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 bindCount 1745a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSparseMemoryBind* pBinds 1746a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 1747a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1748a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkSparseImageMemoryBindInfo { 1749a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkImage image 1750a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 bindCount 1751a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSparseMemoryBind* pBinds 1752a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 1753a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 1754a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkBindSparseInfo { 1755a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO 1756a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const void* pNext 1757a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 waitSemaphoreCount 1758a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSemaphore* pWaitSemaphores 1759a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 numBufferBinds 1760a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSparseBufferMemoryBindInfo* pBufferBinds 1761a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 numImageOpaqueBinds 1762a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds 1763a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 numImageBinds 1764a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSparseImageMemoryBindInfo* pImageBinds 1765a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 signalSemaphoreCount 1766a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkSemaphore* pSignalSemaphores 1767a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 1768a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 176965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallclass VkImageSubresourceLayers { 177065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageAspectFlags aspectMask 17715ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 mipLevel 1772a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall u32 baseArrayLayer 17733fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 layerCount 17745ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 17755ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 1776d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageCopy { 177765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers srcSubresource 1778d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images 177965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers dstSubresource 17803fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkOffset3D dstOffset /// Specified in pixels for both compressed and uncompressed images 1781d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D extent /// Specified in pixels for both compressed and uncompressed images 1782d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1783d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1784d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageBlit { 178565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers srcSubresource 17863dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VkOffset3D[2] srcOffsets 178765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers dstSubresource 17883dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VkOffset3D[2] dstOffsets 1789d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1790d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1791d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkBufferImageCopy { 17925ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize bufferOffset /// Specified in bytes 1793d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 bufferRowLength /// Specified in texels 1794d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 bufferImageHeight 179565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers imageSubresource 1796d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkOffset3D imageOffset /// Specified in pixels for both compressed and uncompressed images 1797d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D imageExtent /// Specified in pixels for both compressed and uncompressed images 1798d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1799d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1800d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkImageResolve { 180165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers srcSubresource 1802d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkOffset3D srcOffset 180365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkImageSubresourceLayers dstSubresource 18043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkOffset3D dstOffset 1805d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent3D extent 1806d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1807d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1808d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkShaderModuleCreateInfo { 1809d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO 1810d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1811a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkShaderModuleCreateFlags flags /// Reserved 1812d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall platform.size_t codeSize /// Specified in bytes 1813a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall const u32* pCode /// Binary code of size codeSize 1814d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1815d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1816d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkDescriptorSetLayoutBinding { 1817091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall u32 binding 1818d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDescriptorType descriptorType /// Type of the descriptors in this binding 1819dba27f71fad236f08deae3d0b987e83700b32f94Jesse Hall u32 descriptorCount /// Number of descriptors in this binding 1820d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkShaderStageFlags stageFlags /// Shader stages this binding is visible to 1821d27f6aad91e6cdb7a867c432f66a852acc077897Jesse 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) 1822d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1823d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1824d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkDescriptorSetLayoutCreateInfo { 1825d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO 1826d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1827a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDescriptorSetLayoutCreateFlags flags 182803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 bindingCount /// Number of bindings in the descriptor set layout 1829543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall const VkDescriptorSetLayoutBinding* pBindings /// Array of descriptor set layout bindings 1830d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1831d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 183265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hallclass VkDescriptorPoolSize { 1833d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDescriptorType type 183403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 descriptorCount 1835d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1836d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1837d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkDescriptorPoolCreateInfo { 1838d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO 1839d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1840fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkDescriptorPoolCreateFlags flags 18415ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 maxSets 184265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 poolSizeCount 184365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall const VkDescriptorPoolSize* pPoolSizes 1844d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1845d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 18463fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkDescriptorSetAllocateInfo { 1847f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO 1848fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall const void* pNext /// Pointer to next structure 1849fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkDescriptorPool descriptorPool 185003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 setCount 1851fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall const VkDescriptorSetLayout* pSetLayouts 1852fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall} 1853fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall 1854d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSpecializationMapEntry { 185565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 constantID /// The SpecConstant ID specified in the BIL 1856d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 offset /// Offset of the value in the data block 1857b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall platform.size_t size /// Size in bytes of the SpecConstant 1858d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1859d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1860d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSpecializationInfo { 1861d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 mapEntryCount /// Number of entries in the map 1862b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall const VkSpecializationMapEntry* pMapEntries /// Array of map entries 1863d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall platform.size_t dataSize /// Size in bytes of pData 1864d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pData /// Pointer to SpecConstant data 1865d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1866d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1867d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineShaderStageCreateInfo { 1868d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO 1869d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1870a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineShaderStageCreateFlags flags 18713e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkShaderStageFlagBits stage 18723e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkShaderModule module 18733e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall const char* pName 1874d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkSpecializationInfo* pSpecializationInfo 1875d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1876d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1877d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkComputePipelineCreateInfo { 1878d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO 1879d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1880d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineCreateFlags flags /// Pipeline creation flags 1881a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineShaderStageCreateInfo stage 1882d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineLayout layout /// Interface layout of the pipeline 1883d27f6aad91e6cdb7a867c432f66a852acc077897Jesse 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 1884d27f6aad91e6cdb7a867c432f66a852acc077897Jesse 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 1885d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1886d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1887d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkVertexInputBindingDescription { 1888b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 binding /// Vertex buffer binding id 1889b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 stride /// Distance between vertices in bytes (0 = no advancement) 189065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkVertexInputRate inputRate /// Rate at which binding is incremented 1891d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1892d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1893d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkVertexInputAttributeDescription { 1894b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 location /// location of the shader vertex attrib 1895b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 binding /// Vertex buffer binding id 1896b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkFormat format /// format of source data 1897b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 offset /// Offset of first element in bytes from base of vertex 1898d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1899d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1900d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineVertexInputStateCreateInfo { 190103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkStructureType sType /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO 190203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall const void* pNext /// Pointer to next structure 1903a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineVertexInputStateCreateFlags flags 190403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 vertexBindingDescriptionCount /// number of bindings 1905d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkVertexInputBindingDescription* pVertexBindingDescriptions 190603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 vertexAttributeDescriptionCount /// number of attributes 1907d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkVertexInputAttributeDescription* pVertexAttributeDescriptions 1908d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1909d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1910d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineInputAssemblyStateCreateInfo { 1911d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO 1912d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1913a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineInputAssemblyStateCreateFlags flags 1914d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPrimitiveTopology topology 19155ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 primitiveRestartEnable 1916d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1917d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1918d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineTessellationStateCreateInfo { 1919d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO 1920d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1921a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineTessellationStateCreateFlags flags 1922d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 patchControlPoints 1923d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1924d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1925d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineViewportStateCreateInfo { 1926d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO 1927d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1928a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineViewportStateCreateFlags flags 1929d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 viewportCount 19305ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkViewport* pViewports 19315ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 scissorCount 19325ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkRect2D* pScissors 1933d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1934d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 19353fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkPipelineRasterizationStateCreateInfo { 193665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO 1937d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 19383fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkPipelineRasterizationStateCreateFlags flags 1939ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VkBool32 depthClampEnable 19405ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 rasterizerDiscardEnable 194165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkPolygonMode polygonMode /// optional (GL45) 1942c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall VkCullModeFlags cullMode 1943d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFrontFace frontFace 19445ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 depthBiasEnable 1945a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall f32 depthBiasConstantFactor 19465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 depthBiasClamp 1947a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall f32 depthBiasSlopeFactor 19485ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 lineWidth 1949d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1950d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1951d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineMultisampleStateCreateInfo { 1952d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO 1953d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1954a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineMultisampleStateCreateFlags flags 1955091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlagBits rasterizationSamples /// Number of samples used for rasterization 19565ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sampleShadingEnable /// optional (GL45) 1957d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 minSampleShading /// optional (GL45) 19585ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkSampleMask* pSampleMask 1959acfa53409aa45de2c12f10617222e0d593e8f2dfJesse Hall VkBool32 alphaToCoverageEnable 1960acfa53409aa45de2c12f10617222e0d593e8f2dfJesse Hall VkBool32 alphaToOneEnable 1961d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1962d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1963d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineColorBlendAttachmentState { 19645ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 blendEnable 196565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBlendFactor srcColorBlendFactor 196665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBlendFactor dstColorBlendFactor 196765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBlendOp colorBlendOp 196865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBlendFactor srcAlphaBlendFactor 196965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBlendFactor dstAlphaBlendFactor 197065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBlendOp alphaBlendOp 197165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkColorComponentFlags colorWriteMask 1972d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1973d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1974d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineColorBlendStateCreateInfo { 1975d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO 1976d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1977a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineColorBlendStateCreateFlags flags 19785ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 logicOpEnable 1979d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkLogicOp logicOp 1980d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 attachmentCount /// # of pAttachments 1981d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineColorBlendAttachmentState* pAttachments 1982b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall f32[4] blendConstants 1983d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1984d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1985d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkStencilOpState { 198665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkStencilOp failOp 198765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkStencilOp passOp 198865ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkStencilOp depthFailOp 198965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkCompareOp compareOp 199065ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 compareMask 199165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 writeMask 199265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 reference 1993d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 1994d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 1995d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineDepthStencilStateCreateInfo { 1996d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO 1997d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 1998a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineDepthStencilStateCreateFlags flags 19995ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 depthTestEnable 20005ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 depthWriteEnable 2001d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkCompareOp depthCompareOp 20025ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 depthBoundsTestEnable /// optional (depth_bounds_test) 20035ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 stencilTestEnable 2004d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStencilOpState front 2005d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStencilOpState back 20065ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 minDepthBounds 20075ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 maxDepthBounds 20085ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 20095ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 20105ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallclass VkPipelineDynamicStateCreateInfo { 20115ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO 20125ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const void* pNext /// Pointer to next structure 2013a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineDynamicStateCreateFlags flags 20145ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 dynamicStateCount 20155ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkDynamicState* pDynamicStates 2016d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2017d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2018d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkGraphicsPipelineCreateInfo { 2019a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO 2020a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const void* pNext /// Pointer to next structure 2021a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineCreateFlags flags /// Pipeline creation flags 2022d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 stageCount 2023a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkPipelineShaderStageCreateInfo* pStages /// One entry for each active shader stage 2024d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineVertexInputStateCreateInfo* pVertexInputState 2025d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState 2026d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineTessellationStateCreateInfo* pTessellationState 2027d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineViewportStateCreateInfo* pViewportState 20283fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkPipelineRasterizationStateCreateInfo* pRasterizationState 2029d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineMultisampleStateCreateInfo* pMultisampleState 2030d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState 2031d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineColorBlendStateCreateInfo* pColorBlendState 20325ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkPipelineDynamicStateCreateInfo* pDynamicState 2033a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineLayout layout /// Interface layout of the pipeline 2034d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRenderPass renderPass 2035d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 subpass 2036a64292517b1876c4bbe5d3e62c577812f40bd922Jesse 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 2037a64292517b1876c4bbe5d3e62c577812f40bd922Jesse 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 2038d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2039d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2040d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineCacheCreateInfo { 2041b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO 2042b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall const void* pNext /// Pointer to next structure 2043a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineCacheCreateFlags flags 2044b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall platform.size_t initialDataSize /// Size of initial data to populate cache, in bytes 2045b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall const void* pInitialData /// Initial data to populate cache 2046d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2047d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2048d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPushConstantRange { 2049d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkShaderStageFlags stageFlags /// Which stages use the range 205003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 offset /// Start of the range, in bytes 205103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 size /// Length of the range, in bytes 2052d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2053d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2054d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPipelineLayoutCreateInfo { 2055d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO 2056d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2057a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineLayoutCreateFlags flags 20583dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 descriptorSetCount /// Number of descriptor sets interfaced by the pipeline 2059d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkDescriptorSetLayout* pSetLayouts /// Array of <setCount> number of descriptor set layout objects defining the layout of the 2060d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 pushConstantRangeCount /// Number of push-constant ranges used by the pipeline 2061d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPushConstantRange* pPushConstantRanges /// Array of pushConstantRangeCount number of ranges used by various shader stages 2062d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2063d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2064d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSamplerCreateInfo { 2065d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO 2066d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2067a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkSamplerCreateFlags flags 206823ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkFilter magFilter /// Filter mode for magnification 206923ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkFilter minFilter /// Filter mode for minifiation 207023ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkSamplerMipmapMode mipmapMode /// Mipmap selection mode 207123ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkSamplerAddressMode addressModeU 207223ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkSamplerAddressMode addressModeV 207323ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkSamplerAddressMode addressModeW 2074d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 mipLodBias 2075f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkBool32 anisotropyEnable 2076d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 maxAnisotropy 20775ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 compareEnable 2078d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkCompareOp compareOp 2079d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 minLod 2080d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 maxLod 2081d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBorderColor borderColor 20825ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 unnormalizedCoordinates 2083d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2084d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 20853fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkCommandPoolCreateInfo { 20863fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO 2087d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 20883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPoolCreateFlags flags /// Command pool creation flags 2089a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 queueFamilyIndex 2090d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2091d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 20923fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkCommandBufferAllocateInfo { 2093f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO 2094d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 20953fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPool commandPool 20963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBufferLevel level 20973dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 commandBufferCount 2098d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2099d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 21003dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hallclass VkCommandBufferInheritanceInfo { 21013dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO 2102d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2103d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRenderPass renderPass /// Render pass for secondary command buffers 21045ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 subpass 2105d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFramebuffer framebuffer /// Framebuffer for secondary command buffers 2106f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkBool32 occlusionQueryEnable 2107f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkQueryControlFlags queryFlags 2108f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkQueryPipelineStatisticFlags pipelineStatistics 2109d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2110d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 21113dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hallclass VkCommandBufferBeginInfo { 21123dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO 21133dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall const void* pNext /// Pointer to next structure 21143dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall VkCommandBufferUsageFlags flags /// Command buffer usage flags 21153dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall const VkCommandBufferInheritanceInfo* pInheritanceInfo 21163dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall} 21173dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall 2118d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkRenderPassBeginInfo { 2119d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO 2120d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2121d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRenderPass renderPass 2122d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFramebuffer framebuffer 2123d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRect2D renderArea 21245ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 clearValueCount 21255ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkClearValue* pClearValues 2126d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2127d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2128d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@union 2129d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared. 2130d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkClearColorValue { 21315ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32[4] float32 21325ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall s32[4] int32 21335ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32[4] uint32 2134d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2135d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2136d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkClearDepthStencilValue { 2137d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 depth 2138d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 stencil 2139d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2140d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2141d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@union 2142d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall/// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared. 2143d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkClearValue { 2144d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkClearColorValue color 21455ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkClearDepthStencilValue depthStencil 2146d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2147d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2148ae38f7355fd03b777313e13586585a74e0dee05bJesse Hallclass VkClearAttachment { 2149ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VkImageAspectFlags aspectMask 2150ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 colorAttachment 2151ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VkClearValue clearValue 2152ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall} 2153ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall 2154d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkAttachmentDescription { 2155a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkAttachmentDescriptionFlags flags 2156d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format 2157091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlagBits samples 2158d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkAttachmentLoadOp loadOp /// Load op for color or depth data 2159d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkAttachmentStoreOp storeOp /// Store op for color or depth data 2160d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkAttachmentLoadOp stencilLoadOp /// Load op for stencil data 2161d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkAttachmentStoreOp stencilStoreOp /// Store op for stencil data 2162d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout initialLayout 2163d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout finalLayout 2164d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2165d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2166d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkAttachmentReference { 2167d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 attachment 2168d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout layout 2169d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2170d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2171d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSubpassDescription { 2172d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSubpassDescriptionFlags flags 2173a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPipelineBindPoint pipelineBindPoint /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now 217403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 inputAttachmentCount 21755ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkAttachmentReference* pInputAttachments 217603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 colorAttachmentCount 21775ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkAttachmentReference* pColorAttachments 21785ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkAttachmentReference* pResolveAttachments 2179c7467b74d3411eb7b9fde67368fad1052eb51c8dJesse Hall const VkAttachmentReference* pDepthStencilAttachment 218003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 preserveAttachmentCount 21813dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall const u32* pPreserveAttachments 2182d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2183d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2184d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSubpassDependency { 2185d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 srcSubpass 21863fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 dstSubpass 2187d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineStageFlags srcStageMask 21883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkPipelineStageFlags dstStageMask 21893e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags srcAccessMask 21903e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall VkAccessFlags dstAccessMask 2191dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkDependencyFlags dependencyFlags 2192d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2193d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2194d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkRenderPassCreateInfo { 2195d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO 2196d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2197a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkRenderPassCreateFlags flags 2198d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 attachmentCount 2199d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkAttachmentDescription* pAttachments 2200d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 subpassCount 2201d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkSubpassDescription* pSubpasses 2202d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 dependencyCount 2203d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkSubpassDependency* pDependencies 2204d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2205d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2206d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkEventCreateInfo { 2207d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO 2208d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2209d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEventCreateFlags flags /// Event creation flags 2210d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2211d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2212d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkFenceCreateInfo { 2213d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO 2214d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2215d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFenceCreateFlags flags /// Fence creation flags 2216d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2217d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2218d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPhysicalDeviceFeatures { 22195ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined 22205ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls 22215ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 imageCubeArray /// image views which are arrays of cube maps 22225ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 independentBlend /// blending operations are controlled per-attachment 22235ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 geometryShader /// geometry stage 22245ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 tessellationShader /// tessellation control and evaluation stage 22255ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sampleRateShading /// per-sample shading and interpolation 22263fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkBool32 dualSrcBlend /// blend operations which take two sources 22275ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 logicOp /// logic operations 22285ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 multiDrawIndirect /// multi draw indirect 2229543a7ffb9845637b4dc0d40898bf5b1057dbc3eaJesse Hall VkBool32 drawIndirectFirstInstance 2230ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall VkBool32 depthClamp /// depth clamping 22315ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 depthBiasClamp /// depth bias clamping 22325ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 fillModeNonSolid /// point and wireframe fill modes 22335ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 depthBounds /// depth bounds test 22345ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 wideLines /// lines with width greater than 1 22355ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 largePoints /// points with size greater than 1 2236fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkBool32 alphaToOne /// The fragment alpha channel can be forced to maximum representable alpha value 2237fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkBool32 multiViewport 2238fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkBool32 samplerAnisotropy 22395ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 textureCompressionETC2 /// ETC texture compression formats 22405ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats 22415ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 textureCompressionBC /// BC1-7 texture compressed formats 224265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBool32 occlusionQueryPrecise 22435ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 pipelineStatisticsQuery /// pipeline statistics query 2244dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkBool32 vertexPipelineStoresAndAtomics 2245dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkBool32 fragmentStoresAndAtomics 2246dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkBool32 shaderTessellationAndGeometryPointSize 22475ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderImageGatherExtended /// texture gather with run-time values and independent offsets 22485ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images 22495ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images 2250d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VkBool32 shaderStorageImageReadWithoutFormat 2251d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VkBool32 shaderStorageImageWriteWithoutFormat 22525ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices 22535ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices 22545ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices 22555ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices 22565ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderClipDistance /// clip distance in shaders 22575ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderCullDistance /// cull distance in shaders 22585ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders 22595ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderInt64 /// 64-bit integers in shaders 22605ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderInt16 /// 16-bit integers in shaders 22615ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support) 226265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkBool32 shaderResourceMinLod /// shader can use texture operations that specify minimum resource LOD 22635ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseBinding /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level 22645ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers 22655ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images 22665ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images 22675ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples 22685ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples 22695ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples 22705ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples 22715ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in) 2272d1af812f20e0793d94702817d441ab799bf46df7Jesse Hall VkBool32 variableMultisampleRate 2273f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkBool32 inheritedQueries 2274d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2275d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2276d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkPhysicalDeviceLimits { 2277d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// resource maximum sizes 2278d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxImageDimension1D /// max 1D image dimension 2279d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxImageDimension2D /// max 2D image dimension 2280d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxImageDimension3D /// max 3D image dimension 2281d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxImageDimensionCube /// max cubemap image dimension 2282d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxImageArrayLayers /// max layers for image arrays 2283b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 maxTexelBufferElements 2284fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall u32 maxUniformBufferRange /// max uniform buffer size (bytes) 2285fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall u32 maxStorageBufferRange /// max storage buffer size (bytes) 2286d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxPushConstantsSize /// max size of the push constants pool (bytes) 2287d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// memory limits 2288d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxMemoryAllocationCount /// max number of device memory allocations supported 2289091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall u32 maxSamplerAllocationCount 22905ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage 22915ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize sparseAddressSpaceSize /// Total address space available for sparse allocations (bytes) 2292d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// descriptor set limits 2293d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxBoundDescriptorSets /// max number of descriptors sets that can be bound to a pipeline 2294d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxPerStageDescriptorSamplers /// max num of samplers allowed per-stage in a descriptor set 2295d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxPerStageDescriptorUniformBuffers /// max num of uniform buffers allowed per-stage in a descriptor set 2296d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxPerStageDescriptorStorageBuffers /// max num of storage buffers allowed per-stage in a descriptor set 2297d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxPerStageDescriptorSampledImages /// max num of sampled images allowed per-stage in a descriptor set 2298d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxPerStageDescriptorStorageImages /// max num of storage images allowed per-stage in a descriptor set 2299e1b12783fff0b8e2defcc94c54fac8d737e6b996Jesse Hall u32 maxPerStageDescriptorInputAttachments 2300dba27f71fad236f08deae3d0b987e83700b32f94Jesse Hall u32 maxPerStageResources 2301d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDescriptorSetSamplers /// max num of samplers allowed in all stages in a descriptor set 2302d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDescriptorSetUniformBuffers /// max num of uniform buffers allowed in all stages in a descriptor set 23035ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 maxDescriptorSetUniformBuffersDynamic /// max num of dynamic uniform buffers allowed in all stages in a descriptor set 2304d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDescriptorSetStorageBuffers /// max num of storage buffers allowed in all stages in a descriptor set 23055ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 maxDescriptorSetStorageBuffersDynamic /// max num of dynamic storage buffers allowed in all stages in a descriptor set 2306d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDescriptorSetSampledImages /// max num of sampled images allowed in all stages in a descriptor set 2307d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDescriptorSetStorageImages /// max num of storage images allowed in all stages in a descriptor set 2308e1b12783fff0b8e2defcc94c54fac8d737e6b996Jesse Hall u32 maxDescriptorSetInputAttachments 2309d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// vertex stage limits 2310d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxVertexInputAttributes /// max num of vertex input attribute slots 23115ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 maxVertexInputBindings /// max num of vertex input binding slots 2312d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxVertexInputAttributeOffset /// max vertex input attribute offset added to vertex buffer offset 2313d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxVertexInputBindingStride /// max vertex input binding stride 2314d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxVertexOutputComponents /// max num of output components written by vertex shader 2315d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// tessellation control stage limits 23163fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 maxTessellationGenerationLevel /// max level supported by tess primitive generator 2317ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationPatchSize /// max patch size (vertices) 2318ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationControlPerVertexInputComponents /// max num of input components per-vertex in TCS 2319ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS 2320ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationControlPerPatchOutputComponents /// max num of output components per-patch in TCS 2321ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationControlTotalOutputComponents /// max total num of per-vertex and per-patch output components in TCS 2322ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationEvaluationInputComponents /// max num of input components per vertex in TES 2323ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 maxTessellationEvaluationOutputComponents /// max num of output components per vertex in TES 2324d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// geometry stage limits 2325d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxGeometryShaderInvocations /// max invocation count supported in geometry shader 2326d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxGeometryInputComponents /// max num of input components read in geometry stage 2327d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxGeometryOutputComponents /// max num of output components written in geometry stage 2328d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxGeometryOutputVertices /// max num of vertices that can be emitted in geometry stage 2329d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxGeometryTotalOutputComponents /// max total num of components (all vertices) written in geometry stage 2330d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// fragment stage limits 2331d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxFragmentInputComponents /// max num of input compontents read in fragment stage 2332fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall u32 maxFragmentOutputAttachments /// max num of output attachments written in fragment stage 23333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 maxFragmentDualSrcAttachments /// max num of output attachments written when using dual source blending 2334d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxFragmentCombinedOutputResources /// max total num of storage buffers, storage images and output buffers 2335d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall /// compute stage limits 2336d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxComputeSharedMemorySize /// max total storage size of work group local storage (bytes) 2337d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32[3] maxComputeWorkGroupCount /// max num of compute work groups that may be dispatched by a single command (x,y,z) 2338d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxComputeWorkGroupInvocations /// max total compute invocations in a single local work group 2339d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32[3] maxComputeWorkGroupSize /// max local size of a compute work group (x,y,z) 2340d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2341d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 subPixelPrecisionBits /// num bits of subpixel precision in screen x and y 2342d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 subTexelPrecisionBits /// num bits of subtexel precision 2343d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 mipmapPrecisionBits /// num bits of mipmap precision 2344d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2345d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxDrawIndexedIndexValue /// max index value for indexed draw calls (for 32-bit indices) 2346dba27f71fad236f08deae3d0b987e83700b32f94Jesse Hall u32 maxDrawIndirectCount 2347d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2348d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 maxSamplerLodBias /// max absolute sampler level of detail bias 2349d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 maxSamplerAnisotropy /// max degree of sampler anisotropy 2350d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2351d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxViewports /// max number of active viewports 2352d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32[2] maxViewportDimensions /// max viewport dimensions (x,y) 2353d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32[2] viewportBoundsRange /// viewport bounds range (min,max) 2354d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 viewportSubPixelBits /// num bits of subpixel precision for viewport 2355d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2356dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall platform.size_t minMemoryMapAlignment /// min required alignment of pointers returned by MapMemory (bytes) 2357dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkDeviceSize minTexelBufferOffsetAlignment /// min required alignment for texel buffer offsets (bytes) 2358dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkDeviceSize minUniformBufferOffsetAlignment /// min required alignment for uniform buffer sizes and offsets (bytes) 2359dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkDeviceSize minStorageBufferOffsetAlignment /// min required alignment for storage buffer offsets (bytes) 2360d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2361fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall s32 minTexelOffset /// min texel offset for OpTextureSampleOffset 2362d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxTexelOffset /// max texel offset for OpTextureSampleOffset 2363fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall s32 minTexelGatherOffset /// min texel offset for OpTextureGatherOffset 2364d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxTexelGatherOffset /// max texel offset for OpTextureGatherOffset 2365d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 minInterpolationOffset /// furthest negative offset for interpolateAtOffset 2366d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 maxInterpolationOffset /// furthest positive offset for interpolateAtOffset 2367d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 subPixelInterpolationOffsetBits /// num of subpixel bits for interpolateAtOffset 2368d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2369d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxFramebufferWidth /// max width for a framebuffer 2370d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxFramebufferHeight /// max height for a framebuffer 2371d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxFramebufferLayers /// max layer count for a layered framebuffer 2372091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags framebufferColorSampleCounts 2373091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags framebufferDepthSampleCounts 2374091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags framebufferStencilSampleCounts 2375091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags framebufferNoAttachmentSampleCounts 2376d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxColorAttachments /// max num of framebuffer color attachments 2377d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2378091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags sampledImageColorSampleCounts 2379091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags sampledImageIntegerSampleCounts 2380091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags sampledImageDepthSampleCounts 2381091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags sampledImageStencilSampleCounts 2382091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlags storageImageSampleCounts 2383d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxSampleMaskWords /// max num of sample mask words 2384f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkBool32 timestampComputeAndGraphics 2385d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2386a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall f32 timestampPeriod 2387d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2388d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxClipDistances /// max number of clip distances 2389d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxCullDistances /// max number of cull distances 2390d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 maxCombinedClipAndCullDistances /// max combined number of user clipping 2391d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2392fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall u32 discreteQueuePriorities 2393fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall 23945ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32[2] pointSizeRange /// range (min,max) of supported point sizes 23955ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32[2] lineWidthRange /// range (min,max) of supported line widths 2396d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 pointSizeGranularity /// granularity of supported point sizes 2397d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall f32 lineWidthGranularity /// granularity of supported line widths 239803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkBool32 strictLines 2399091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkBool32 standardSampleLocations 2400a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall 240165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkDeviceSize optimalBufferCopyOffsetAlignment 240265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkDeviceSize optimalBufferCopyRowPitchAlignment 2403dba27f71fad236f08deae3d0b987e83700b32f94Jesse Hall VkDeviceSize nonCoherentAtomSize 2404d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2405d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 24065ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallclass VkPhysicalDeviceSparseProperties { 24075ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 residencyStandard2DBlockShape /// Sparse resources support: GPU will access all 2D (single sample) sparse resources using the standard block shapes (based on pixel format) 2408b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkBool32 residencyStandard2DMultisampleBlockShape /// Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard block shapes (based on pixel format) 24095ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 residencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format) 24105ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse 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 24115ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse 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 24125ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 24135ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 2414d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkSemaphoreCreateInfo { 2415d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO 2416d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2417d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSemaphoreCreateFlags flags /// Semaphore creation flags 2418d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2419d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2420d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkQueryPoolCreateInfo { 2421d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO 2422d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2423a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkQueryPoolCreateFlags flags 2424d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryType queryType 24253dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 queryCount 2426d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPipelineStatisticFlags pipelineStatistics /// Optional 2427d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2428d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2429d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallclass VkFramebufferCreateInfo { 2430d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO 2431d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const void* pNext /// Pointer to next structure 2432a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkFramebufferCreateFlags flags 2433d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRenderPass renderPass 2434d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 attachmentCount 24355ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkImageView* pAttachments 2436d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 width 2437d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 height 2438d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 layers 2439d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2440d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 24413fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkDrawIndirectCommand { 2442d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 vertexCount 2443d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 instanceCount 2444d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 firstVertex 2445d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 firstInstance 2446d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2447d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 24483fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkDrawIndexedIndirectCommand { 2449d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 indexCount 2450d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 instanceCount 2451d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 firstIndex 2452d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 vertexOffset 2453d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 firstInstance 2454d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2455d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 24563fbc856120217247c72fb5ed88500000f3881c45Jesse Hallclass VkDispatchIndirectCommand { 2457d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 x 2458d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 y 2459d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 z 2460d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2461d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 24623e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 2463b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hallclass VkSurfaceCapabilitiesKHR { 24641356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 minImageCount 24651356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 maxImageCount 24661356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D currentExtent 24671356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D minImageExtent 24681356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D maxImageExtent 2469f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall u32 maxImageArrayLayers 24701356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceTransformFlagsKHR supportedTransforms 2471f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkSurfaceTransformFlagBitsKHR currentTransform 2472a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkCompositeAlphaFlagsKHR supportedCompositeAlpha 24731356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkImageUsageFlags supportedUsageFlags 247488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 247588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 24763e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 24771356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkSurfaceFormatKHR { 24781356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkFormat format 24791356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkColorSpaceKHR colorSpace 248088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 248188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 24823e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 24831356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkSwapchainCreateInfoKHR { 24841356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkStructureType sType 24851356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const void* pNext 2486f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkSwapchainCreateFlagsKHR flags 24871356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR surface 24881356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 minImageCount 24891356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkFormat imageFormat 24901356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkColorSpaceKHR imageColorSpace 24911356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D imageExtent 2492f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall u32 imageArrayLayers 2493f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkImageUsageFlags imageUsage 24941356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSharingMode sharingMode 249503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 queueFamilyIndexCount 24961356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const u32* pQueueFamilyIndices 2497f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkSurfaceTransformFlagBitsKHR preTransform 2498f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkCompositeAlphaFlagBitsKHR compositeAlpha 24991356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPresentModeKHR presentMode 25001356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkBool32 clipped 2501f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkSwapchainKHR oldSwapchain 250288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 250388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 25043e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 25051356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkPresentInfoKHR { 25061356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkStructureType sType 25071356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const void* pNext 2508b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 waitSemaphoreCount 2509b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall const VkSemaphore* pWaitSemaphores 25101356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 swapchainCount 251103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall const VkSwapchainKHR* pSwapchains 2512f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall const u32* pImageIndices 2513e1b12783fff0b8e2defcc94c54fac8d737e6b996Jesse Hall VkResult* pResults 25141356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 25151356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 25163e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 25171356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkDisplayPropertiesKHR { 25181356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayKHR display 25191356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const char* displayName 25201356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D physicalDimensions 25211356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D physicalResolution 25221356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceTransformFlagsKHR supportedTransforms 25231356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkBool32 planeReorderPossible 2524a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkBool32 persistentContent 25251356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 25261356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 25273e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 2528a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkDisplayModeParametersKHR { 25291356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D visibleRegion 2530a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 refreshRate 25311356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 25321356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 25333e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 25341356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkDisplayModePropertiesKHR { 25351356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayModeKHR displayMode 2536a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDisplayModeParametersKHR parameters 25371356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 25381356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 25393e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 25401356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkDisplayModeCreateInfoKHR { 25411356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkStructureType sType 25421356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const void* pNext 25439ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall VkDisplayModeCreateFlagsKHR flags 2544a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDisplayModeParametersKHR parameters 25451356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 25461356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 25473e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 25481356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkDisplayPlanePropertiesKHR { 2549a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDisplayKHR currentDisplay 2550a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 currentStackIndex 2551a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 2552a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 25533e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 2554a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkDisplayPlaneCapabilitiesKHR { 25551356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayPlaneAlphaFlagsKHR supportedAlpha 25561356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkOffset2D minSrcPosition 25571356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkOffset2D maxSrcPosition 25581356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D minSrcExtent 25591356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D maxSrcExtent 25601356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkOffset2D minDstPosition 25611356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkOffset2D maxDstPosition 25621356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D minDstExtent 25631356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkExtent2D maxDstExtent 25641356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 25651356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 25663e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 2567a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallclass VkDisplaySurfaceCreateInfoKHR { 25681356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkStructureType sType 25691356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const void* pNext 2570f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkDisplaySurfaceCreateFlagsKHR flags 25711356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayModeKHR displayMode 25721356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 planeIndex 25731356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 planeStackIndex 2574f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkSurfaceTransformFlagBitsKHR transform 25751356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall f32 globalAlpha 2576f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkDisplayPlaneAlphaFlagBitsKHR alphaMode 2577f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkExtent2D imageExtent 25781356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 25791356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 25803e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display_swapchain") 25811356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallclass VkDisplayPresentInfoKHR { 25821356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkStructureType sType 25831356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const void* pNext 25841356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkRect2D srcRect 25851356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkRect2D dstRect 2586a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkBool32 persistent 258788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 2588d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2589f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall@extension("VK_KHR_xlib_surface") 2590f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hallclass VkXlibSurfaceCreateInfoKHR { 2591f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkStructureType sType 2592f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall const void* pNext 2593f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkXlibSurfaceCreateFlagsKHR flags 2594f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall platform.Display* dpy 2595f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall platform.Window window 2596f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall} 2597f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 2598f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall@extension("VK_KHR_xcb_surface") 2599f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hallclass VkXcbSurfaceCreateInfoKHR { 2600f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkStructureType sType 2601f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall const void* pNext 2602f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkXcbSurfaceCreateFlagsKHR flags 2603f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall platform.xcb_connection_t* connection 2604f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall platform.xcb_window_t window 2605f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall} 2606f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 2607f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall@extension("VK_KHR_wayland_surface") 2608f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hallclass VkWaylandSurfaceCreateInfoKHR { 2609f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkStructureType sType 2610f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall const void* pNext 2611f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkWaylandSurfaceCreateFlagsKHR flags 2612f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall platform.wl_display* display 2613f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall platform.wl_surface* surface 2614f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall} 2615f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 2616f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall@extension("VK_KHR_mir_surface") 2617f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hallclass VkMirSurfaceCreateInfoKHR { 2618f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkStructureType sType 2619f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall const void* pNext 2620f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkMirSurfaceCreateFlagsKHR flags 2621f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall platform.MirConnection* connection 2622f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall platform.MirSurface* mirSurface 2623f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall} 2624f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 2625f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall@extension("VK_KHR_android_surface") 2626f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hallclass VkAndroidSurfaceCreateInfoKHR { 2627f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkStructureType sType 2628f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall const void* pNext 2629f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkAndroidSurfaceCreateFlagsKHR flags 2630f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall platform.ANativeWindow* window 2631f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall} 2632f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 2633f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall@extension("VK_KHR_win32_surface") 2634f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hallclass VkWin32SurfaceCreateInfoKHR { 2635f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkStructureType sType 2636f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall const void* pNext 2637f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall VkWin32SurfaceCreateFlagsKHR flags 2638f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall platform.HINSTANCE hinstance 2639f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall platform.HWND hwnd 2640f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall} 2641f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall 2642b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu@extension("VK_ANDROID_native_buffer") 2643b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wuclass VkNativeBufferANDROID { 2644b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu VkStructureType sType 2645b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu const void* pNext 2646b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu platform.buffer_handle_t handle 2647b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu int stride 2648b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu int format 2649b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu int usage 2650b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu} 2651b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu 2652715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@extension("VK_EXT_debug_report") 2653715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hallclass VkDebugReportCallbackCreateInfoEXT { 2654715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VkStructureType sType 2655715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall const void* pNext 2656715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VkDebugReportFlagsEXT flags 2657715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall PFN_vkDebugReportCallbackEXT pfnCallback 2658715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall void* pUserData 2659715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall} 2660715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall 26612676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_AMD_rasterization_order") 26622676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hallclass VkPipelineRasterizationStateRasterizationOrderAMD { 26632676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkStructureType sType 26642676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall const void* pNext 26652676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkRasterizationOrderAMD rasterizationOrder 26662676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall} 26672676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 26682676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_EXT_debug_marker") 26692676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hallclass VkDebugMarkerObjectNameInfoEXT { 26702676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkStructureType sType 26712676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall const void* pNext 26722676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkDebugReportObjectTypeEXT objectType 26732676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall u64 object 26742676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall const char* pObjectName 26752676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall} 26762676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 26772676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_EXT_debug_marker") 26782676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hallclass VkDebugMarkerObjectTagInfoEXT { 26792676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkStructureType sType 26802676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall const void* pNext 26812676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkDebugReportObjectTypeEXT objectType 26822676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall u64 object 26832676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall u64 tagName 26842676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall platform.size_t tagSize 26852676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall const void* pTag 26862676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall} 26872676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 26882676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_EXT_debug_marker") 26892676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hallclass VkDebugMarkerMarkerInfoEXT { 26902676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkStructureType sType 26912676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall const void* pNext 26922676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall const char* pMarkerName 26932676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall f32[4] color 26942676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall} 26952676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 26961356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 2697d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall//////////////// 2698d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Commands // 2699d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall//////////////// 2700d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2701d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Function pointers. TODO: add support for function pointers. 2702d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2703d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@external type void* PFN_vkVoidFunction 2704d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@pfn cmd void vkVoidFunction() { 2705d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2706d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 27073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@external type void* PFN_vkAllocationFunction 27083fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@pfn cmd void* vkAllocationFunction( 2709d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall void* pUserData, 2710d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall platform.size_t size, 2711d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall platform.size_t alignment, 27123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkSystemAllocationScope allocationScope) { 271303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall return ? 271403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall} 271503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall 27163fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@external type void* PFN_vkReallocationFunction 27173fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@pfn cmd void* vkReallocationFunction( 271803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall void* pUserData, 271903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall void* pOriginal, 272003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall platform.size_t size, 272103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall platform.size_t alignment, 27223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkSystemAllocationScope allocationScope) { 2723d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2724d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2725d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2726d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@external type void* PFN_vkFreeFunction 2727d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@pfn cmd void vkFreeFunction( 2728d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall void* pUserData, 27293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall void* pMemory) { 2730d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2731d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 27323fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@external type void* PFN_vkInternalAllocationNotification 27333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@pfn cmd void vkInternalAllocationNotification( 273403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall void* pUserData, 273503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall platform.size_t size, 27363fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkInternalAllocationType allocationType, 27373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkSystemAllocationScope allocationScope) { 273803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall} 273903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall 274003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall@external type void* PFN_vkInternalFreeNotification 274103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall@pfn cmd void vkInternalFreeNotification( 274203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall void* pUserData, 274303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall platform.size_t size, 27443fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkInternalAllocationType allocationType, 27453fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkSystemAllocationScope allocationScope) { 274603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall} 2747d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2748d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Global functions 2749d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2750d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 2751d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateInstance( 2752d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkInstanceCreateInfo* pCreateInfo, 27533fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 2754d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkInstance* pInstance) { 2755d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO) 2756d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2757d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall instance := ? 2758d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pInstance[0] = instance 2759d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Instances[instance] = new!InstanceObject() 2760d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 27613dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerCount] 27623dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionCount] 2763d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2764d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2765d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2766d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2767d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 27685ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyInstance( 276903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkInstance instance, 27703fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 2771d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall instanceObject := GetInstance(instance) 2772d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2773d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Instances[instance] = null 2774d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2775d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2776d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 2777d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkEnumeratePhysicalDevices( 2778d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkInstance instance, 2779d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32* pPhysicalDeviceCount, 2780d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice* pPhysicalDevices) { 2781d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall instanceObject := GetInstance(instance) 2782d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2783d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceCount := as!u32(?) 2784d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pPhysicalDeviceCount[0] = physicalDeviceCount 2785d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDevices := pPhysicalDevices[0:physicalDeviceCount] 2786d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2787d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. physicalDeviceCount) { 2788d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDevice := ? 2789d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDevices[i] = physicalDevice 2790d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall if !(physicalDevice in State.PhysicalDevices) { 2791d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance) 2792d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2793d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2794d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2795d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2796d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2797d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2798d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd PFN_vkVoidFunction vkGetDeviceProcAddr( 2799d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 2800d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* pName) { 28015ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall if device != NULL_HANDLE { 2802d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall device := GetDevice(device) 2803d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2804d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2805d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2806d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2807d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2808d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd PFN_vkVoidFunction vkGetInstanceProcAddr( 2809d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkInstance instance, 2810d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* pName) { 28115ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall if instance != NULL_HANDLE { 2812d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall instanceObject := GetInstance(instance) 2813d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2814d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2815d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2816d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2817d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2818606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetPhysicalDeviceProperties( 2819d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2820d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDeviceProperties* pProperties) { 2821d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2822d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2823d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties := ? 2824d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pProperties[0] = properties 2825d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2826d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2827606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetPhysicalDeviceQueueFamilyProperties( 2828d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 282903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pQueueFamilyPropertyCount, 28305ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkQueueFamilyProperties* pQueueFamilyProperties) { 2831d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 28325ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // TODO: Figure out how to express fetch-count-or-properties 28335ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // This version fails 'apic validate' with 'fence not allowed in 28345ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // *semantic.Branch'. Other attempts have failed with the same or other 28355ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // errors. 28365ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // if pQueueFamilyProperties != null { 28375ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // queuesProperties := pQueueFamilyProperties[0:pCount[0]] 28385ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // for i in (0 .. pCount[0]) { 28395ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // queueProperties := as!VkQueueFamilyProperties(?) 28405ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // queuesProperties[i] = queueProperties 28415ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // } 28425ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // } else { 28435ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // count := ? 28445ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // pCount[0] = count 28455ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // } 2846d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2847d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2848606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetPhysicalDeviceMemoryProperties( 2849d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2850d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDeviceMemoryProperties* pMemoryProperties) { 2851d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2852d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2853d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall memoryProperties := ? 2854d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pMemoryProperties[0] = memoryProperties 2855d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2856d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2857606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetPhysicalDeviceFeatures( 2858d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2859d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDeviceFeatures* pFeatures) { 2860d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2861d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2862d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall features := ? 2863d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pFeatures[0] = features 2864d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2865d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2866606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetPhysicalDeviceFormatProperties( 2867d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2868d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format, 2869d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormatProperties* pFormatProperties) { 2870d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2871d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2872d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall formatProperties := ? 2873d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pFormatProperties[0] = formatProperties 2874d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2875d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2876a9e5703e380d9d7f096d177adb792621a1e8d4baJesse Hallcmd VkResult vkGetPhysicalDeviceImageFormatProperties( 2877d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2878d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format, 2879d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageType type, 2880d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageTiling tiling, 2881d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageUsageFlags usage, 28825ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkImageCreateFlags flags, 2883d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageFormatProperties* pImageFormatProperties) { 2884d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2885d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2886d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageFormatProperties := ? 2887d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pImageFormatProperties[0] = imageFormatProperties 2888a9e5703e380d9d7f096d177adb792621a1e8d4baJesse Hall 2889a9e5703e380d9d7f096d177adb792621a1e8d4baJesse Hall return ? 2890d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2891d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2892d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2893d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Device functions 2894d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2895d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 2896d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateDevice( 2897d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2898d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkDeviceCreateInfo* pCreateInfo, 28993fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 2900d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice* pDevice) { 2901d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO) 2902d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2903d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2904d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall device := ? 2905d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pDevice[0] = device 2906d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Devices[device] = new!DeviceObject(physicalDevice: physicalDevice) 2907d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2908d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2909d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2910d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2911d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 29125ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyDevice( 291303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkDevice device, 29143fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 2915d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 2916d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2917d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Devices[device] = null 2918d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2919d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2920d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2921d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Extension discovery functions 2922d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 29235ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd VkResult vkEnumerateInstanceLayerProperties( 292403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 2925d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkLayerProperties* pProperties) { 2926d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall count := as!u32(?) 292703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pPropertyCount[0] = count 2928d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2929d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties := pProperties[0:count] 2930d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. count) { 2931d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall property := ? 2932d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties[i] = property 2933d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2934d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2935d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2936d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2937d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 29385ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd VkResult vkEnumerateInstanceExtensionProperties( 2939d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* pLayerName, 294003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 2941d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtensionProperties* pProperties) { 2942d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall count := as!u32(?) 294303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pPropertyCount[0] = count 2944d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2945d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties := pProperties[0:count] 2946d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. count) { 2947d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall property := ? 2948d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties[i] = property 2949d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2950d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2951d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2952d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2953d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 29545ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd VkResult vkEnumerateDeviceLayerProperties( 2955d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 295603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 2957d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkLayerProperties* pProperties) { 2958d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2959d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall count := as!u32(?) 296003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pPropertyCount[0] = count 2961d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2962d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties := pProperties[0:count] 2963d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. count) { 2964d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall property := ? 2965d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties[i] = property 2966d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2967d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2968d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2969d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2970d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 29715ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd VkResult vkEnumerateDeviceExtensionProperties( 2972d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 2973d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const char* pLayerName, 297403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 2975d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtensionProperties* pProperties) { 2976d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 2977d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2978d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall count := as!u32(?) 297903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pPropertyCount[0] = count 2980d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2981d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties := pProperties[0:count] 2982d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. count) { 2983d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall property := ? 2984d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall properties[i] = property 2985d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 2986d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2987d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 2988d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 2989d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2990d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2991d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Queue functions 2992d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 2993d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 2994606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetDeviceQueue( 2995d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 2996d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queueFamilyIndex, 2997d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queueIndex, 2998d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueue* pQueue) { 2999d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3000d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3001d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queue := ? 3002d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pQueue[0] = queue 3003d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3004d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall if !(queue in State.Queues) { 3005d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Queues[queue] = new!QueueObject(device: device) 3006d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3007d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3008d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3009d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 3010d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkQueueSubmit( 3011d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueue queue, 3012a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall u32 submitCount, 3013b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall const VkSubmitInfo* pSubmits, 3014d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFence fence) { 3015d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queueObject := GetQueue(queue) 3016d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 30175ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall if fence != NULL_HANDLE { 3018d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fenceObject := GetFence(fence) 3019d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(fenceObject.device == queueObject.device) 3020d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3021d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 30223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // commandBuffers := pcommandBuffers[0:commandBufferCount] 30233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // for i in (0 .. commandBufferCount) { 30243fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // commandBuffer := commandBuffers[i] 30253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // commandBufferObject := GetCommandBuffer(commandBuffer) 30263fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // assert(commandBufferObject.device == queueObject.device) 3027a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall // 30283fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags, 30293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall // "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.") 3030a366a5186ea941c5653cbdb8df18dc19318912b6Jesse Hall // } 3031d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3032d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3033d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3034d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3035d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3036d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkQueueWaitIdle( 3037d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueue queue) { 3038d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queueObject := GetQueue(queue) 3039d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3040d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3041d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3042d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3043d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3044d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkDeviceWaitIdle( 3045d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device) { 3046d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3047d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3048d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3049d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3050d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3051d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3052d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Memory functions 3053d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3054d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 30553fbc856120217247c72fb5ed88500000f3881c45Jesse Hallcmd VkResult vkAllocateMemory( 3056d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 30573fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkMemoryAllocateInfo* pAllocateInfo, 30583fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 30593fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory* pMemory) { 3060f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO) 3061d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3062d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 30633fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memory := ? 30643fbc856120217247c72fb5ed88500000f3881c45Jesse Hall pMemory[0] = memory 30653fbc856120217247c72fb5ed88500000f3881c45Jesse Hall State.DeviceMemories[memory] = new!DeviceMemoryObject( 3066d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall device: device, 30673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall allocationSize: pAllocateInfo[0].allocationSize) 3068d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3069d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3070d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3071d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3072d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 30735ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkFreeMemory( 3074d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 30753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory, 30763fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3077d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 30783fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 30793fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 3080d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3081d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Check that no objects are still bound before freeing. 30823fbc856120217247c72fb5ed88500000f3881c45Jesse Hall validate("MemoryCheck", len(memoryObject.boundObjects) == 0, 3083d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall "vkFreeMemory: objects still bound") 30843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0, 30853fbc856120217247c72fb5ed88500000f3881c45Jesse Hall "vkFreeMemory: commandBuffers still bound") 30863fbc856120217247c72fb5ed88500000f3881c45Jesse Hall State.DeviceMemories[memory] = null 3087d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3088d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3089d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 3090d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkMapMemory( 3091d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 30923fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory, 30935ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset, 30945ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize size, 3095d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryMapFlags flags, 3096d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall void** ppData) { 3097d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 30983fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 30993fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 3100d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3101d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(flags == as!VkMemoryMapFlags(0)) 31023fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert((offset + size) <= memoryObject.allocationSize) 3103d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3104d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3105d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3106d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3107d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 31085ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkUnmapMemory( 3109d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 31103fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory) { 3111d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 31123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 31133fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 3114d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3115d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3116d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkFlushMappedMemoryRanges( 3117d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 31183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 memoryRangeCount 31193fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkMappedMemoryRange* pMemoryRanges) { 3120d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3121d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 31223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryRanges := pMemoryRanges[0:memoryRangeCount] 31233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall for i in (0 .. memoryRangeCount) { 31243fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryRange := memoryRanges[i] 31253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memoryRange.memory) 31263fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 31273fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize) 3128d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3129d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3130d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3131d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3132d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3133d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkInvalidateMappedMemoryRanges( 3134d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 31353fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 memoryRangeCount, 31363fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkMappedMemoryRange* pMemoryRanges) { 3137d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3138d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 31393fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryRanges := pMemoryRanges[0:memoryRangeCount] 31403fbc856120217247c72fb5ed88500000f3881c45Jesse Hall for i in (0 .. memoryRangeCount) { 31413fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryRange := memoryRanges[i] 31423fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memoryRange.memory) 31433fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 31443fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize) 3145d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3146d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3147d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3148d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3149d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3150d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3151d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Memory management API functions 3152d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3153606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetDeviceMemoryCommitment( 3154d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3155d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDeviceMemory memory, 31565ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize* pCommittedMemoryInBytes) { 3157d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3158d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 31595ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall if memory != NULL_HANDLE { 3160d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall memoryObject := GetDeviceMemory(memory) 3161d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(memoryObject.device == device) 3162d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3163d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3164d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall committedMemoryInBytes := ? 3165d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pCommittedMemoryInBytes[0] = committedMemoryInBytes 3166d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3167d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3168606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetBufferMemoryRequirements( 3169d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3170d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer, 3171d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryRequirements* pMemoryRequirements) { 3172d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3173d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 3174d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(bufferObject.device == device) 3175d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3176d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3177d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkBindBufferMemory( 3178d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3179d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer, 31803fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory, 31813fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize memoryOffset) { 3182d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3183d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 3184d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(bufferObject.device == device) 3185d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3186d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Unbind buffer from previous memory object, if not VK_NULL_HANDLE. 31873fbc856120217247c72fb5ed88500000f3881c45Jesse Hall if bufferObject.memory != NULL_HANDLE { 31883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(bufferObject.memory) 31893fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject.boundObjects[as!u64(buffer)] = null 3190d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3191d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3192d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Bind buffer to given memory object, if not VK_NULL_HANDLE. 31933fbc856120217247c72fb5ed88500000f3881c45Jesse Hall if memory != NULL_HANDLE { 31943fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 31953fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 31963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject.boundObjects[as!u64(buffer)] = memoryOffset 3197d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 31983fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bufferObject.memory = memory 31993fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bufferObject.memoryOffset = memoryOffset 3200d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3201d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3202d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3203d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3204606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetImageMemoryRequirements( 3205d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3206d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image, 3207d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkMemoryRequirements* pMemoryRequirements) { 3208d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3209d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 3210d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageObject.device == device) 3211d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3212d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3213d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkBindImageMemory( 3214d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3215d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image, 32163fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory, 32173fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize memoryOffset) { 3218d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3219d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 3220d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageObject.device == device) 3221d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3222d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Unbind image from previous memory object, if not VK_NULL_HANDLE. 32233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall if imageObject.memory != NULL_HANDLE { 32243fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(imageObject.memory) 32253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject.boundObjects[as!u64(image)] = null 3226d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3227d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3228d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Bind image to given memory object, if not VK_NULL_HANDLE. 32293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall if memory != NULL_HANDLE { 32303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 32313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memoryObject.device == device) 32323fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject.boundObjects[as!u64(image)] = memoryOffset 3233d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 32343fbc856120217247c72fb5ed88500000f3881c45Jesse Hall imageObject.memory = memory 32353fbc856120217247c72fb5ed88500000f3881c45Jesse Hall imageObject.memoryOffset = memoryOffset 3236d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3237d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3238d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3239d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3240606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetImageSparseMemoryRequirements( 3241d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3242d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image, 324303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pSparseMemoryRequirementCount, 3244d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSparseImageMemoryRequirements* pSparseMemoryRequirements) { 3245d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3246d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 3247d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageObject.device == device) 3248d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3249d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3250606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetPhysicalDeviceSparseImageFormatProperties( 3251d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice, 3252d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFormat format, 3253d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageType type, 3254091ed9e69400edcc549c9b11635d1a305d6b5a83Jesse Hall VkSampleCountFlagBits samples, 3255d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageUsageFlags usage, 3256d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageTiling tiling, 325703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 3258d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSparseImageFormatProperties* pProperties) { 3259d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 3260d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3261d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3262a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkQueueBindSparse( 3263d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueue queue, 326403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 bindInfoCount, 3265a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkBindSparseInfo* pBindInfo, 3266a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkFence fence) { 3267d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queueObject := GetQueue(queue) 3268d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3269d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3270d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3271d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3272d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3273d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Fence functions 3274d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3275d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3276d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateFence( 3277d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3278d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkFenceCreateInfo* pCreateInfo, 32793fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3280d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFence* pFence) { 3281d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO) 3282d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3283d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3284d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fence := ? 3285d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pFence[0] = fence 3286d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Fences[fence] = new!FenceObject( 3287d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hall device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT))) 3288d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3289d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3290d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3291d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3292d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 32935ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyFence( 3294d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 329503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkFence fence, 32963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3297d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3298d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fenceObject := GetFence(fence) 3299d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(fenceObject.device == device) 3300d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3301d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Fences[fence] = null 3302d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3303d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3304d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3305d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkResetFences( 3306d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3307d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 fenceCount, 3308d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkFence* pFences) { 3309d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3310d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3311d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fences := pFences[0:fenceCount] 3312d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. fenceCount) { 3313d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fence := fences[i] 3314d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fenceObject := GetFence(fence) 3315d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(fenceObject.device == device) 3316d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fenceObject.signaled = false 3317d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3318d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3319d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3320d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3321d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3322d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3323d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkGetFenceStatus( 3324d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3325d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFence fence) { 3326d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3327d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fenceObject := GetFence(fence) 3328d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(fenceObject.device == device) 3329d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3330d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3331d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3332d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3333d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3334d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkWaitForFences( 3335d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3336d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 fenceCount, 3337d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkFence* pFences, 33385ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkBool32 waitAll, 3339d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u64 timeout) { /// timeout in nanoseconds 3340d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3341d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3342d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fences := pFences[0:fenceCount] 3343d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. fenceCount) { 3344d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fence := fences[i] 3345d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall fenceObject := GetFence(fence) 3346d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(fenceObject.device == device) 3347d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3348d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3349d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3350d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3351d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3352d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3353d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Queue semaphore functions 3354d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3355d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3356d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateSemaphore( 3357d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3358d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkSemaphoreCreateInfo* pCreateInfo, 33593fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3360d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSemaphore* pSemaphore) { 3361d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO) 3362d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3363d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3364d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall semaphore := ? 3365d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pSemaphore[0] = semaphore 3366d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Semaphores[semaphore] = new!SemaphoreObject(device: device) 3367d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3368d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3369d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3370d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3371d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 33725ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroySemaphore( 3373d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 337403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkSemaphore semaphore, 33753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3376d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3377d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall semaphoreObject := GetSemaphore(semaphore) 3378d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(semaphoreObject.device == device) 3379d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3380d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Semaphores[semaphore] = null 3381d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3382d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3383d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3384d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Event functions 3385d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3386d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3387d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateEvent( 3388d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3389d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkEventCreateInfo* pCreateInfo, 33903fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3391d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEvent* pEvent) { 3392d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO) 3393d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3394d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3395d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall event := ? 3396d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pEvent[0] = event 3397d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Events[event] = new!EventObject(device: device) 3398d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3399d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3400d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3401d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3402d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 34035ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyEvent( 3404d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 340503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkEvent event, 34063fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3407d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3408d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 3409d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(eventObject.device == device) 3410d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3411d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Events[event] = null 3412d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3413d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3414d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3415d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkGetEventStatus( 3416d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3417d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEvent event) { 3418d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3419d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 3420d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(eventObject.device == device) 3421d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3422d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3423d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3424d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3425d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3426d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkSetEvent( 3427d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3428d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEvent event) { 3429d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3430d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 3431d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(eventObject.device == device) 3432d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3433d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3434d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3435d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3436d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3437d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkResetEvent( 3438d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3439d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEvent event) { 3440d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3441d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 3442d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(eventObject.device == device) 3443d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3444d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3445d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3446d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3447d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3448d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Query functions 3449d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3450d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3451d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateQueryPool( 3452d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3453d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkQueryPoolCreateInfo* pCreateInfo, 34543fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3455d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPool* pQueryPool) { 3456d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO) 3457d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3458d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3459d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPool := ? 3460d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pQueryPool[0] = queryPool 3461d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.QueryPools[queryPool] = new!QueryPoolObject(device: device) 3462d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3463d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3464d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3465d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3466d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 34675ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyQueryPool( 3468d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 346903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkQueryPool queryPool, 34703fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3471d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3472d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPoolObject := GetQueryPool(queryPool) 3473d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(queryPoolObject.device == device) 3474d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3475d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.QueryPools[queryPool] = null 3476d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3477d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3478d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3479d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkGetQueryPoolResults( 3480d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3481d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPool queryPool, 3482f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall u32 firstQuery, 3483d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queryCount, 3484a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall platform.size_t dataSize, 3485d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall void* pData, 3486a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall VkDeviceSize stride, 3487d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryResultFlags flags) { 3488d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3489d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPoolObject := GetQueryPool(queryPool) 3490d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(queryPoolObject.device == device) 3491d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3492d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall data := pData[0:dataSize] 3493d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3494d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3495d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3496d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3497d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Buffer functions 3498d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3499d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3500d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateBuffer( 3501d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3502d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkBufferCreateInfo* pCreateInfo, 35033fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3504d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer* pBuffer) { 3505d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO) 3506d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3507d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3508d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall buffer := ? 3509d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pBuffer[0] = buffer 3510d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Buffers[buffer] = new!BufferObject(device: device) 3511d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3512d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3513d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3514d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3515d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 35165ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyBuffer( 3517d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 351803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkBuffer buffer, 35193fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3520d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3521d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 3522d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(bufferObject.device == device) 3523d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 35243fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(bufferObject.memory == 0) 3525d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Buffers[buffer] = null 3526d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3527d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3528d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3529d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Buffer view functions 3530d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3531d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3532d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateBufferView( 3533d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3534d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkBufferViewCreateInfo* pCreateInfo, 35353fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3536d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBufferView* pView) { 3537d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO) 3538d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3539d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3540d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(pCreateInfo.buffer) 3541d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(bufferObject.device == device) 3542d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3543d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall view := ? 3544d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pView[0] = view 3545d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.BufferViews[view] = new!BufferViewObject(device: device, buffer: pCreateInfo.buffer) 3546d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3547d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3548d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3549d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3550d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 35515ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyBufferView( 3552d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 355303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkBufferView bufferView, 35543fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3555d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3556d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferViewObject := GetBufferView(bufferView) 3557d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(bufferViewObject.device == device) 3558d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3559d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.BufferViews[bufferView] = null 3560d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3561d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3562d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3563d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Image functions 3564d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3565d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3566d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateImage( 3567d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3568d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageCreateInfo* pCreateInfo, 35693fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3570d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage* pImage) { 3571d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO) 3572d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3573d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3574d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall image := ? 3575d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pImage[0] = image 3576d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Images[image] = new!ImageObject(device: device) 3577d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3578d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3579d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3580d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3581d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 35825ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyImage( 3583d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 358403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkImage image, 35853fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3586d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3587d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 3588d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageObject.device == device) 3589d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 35903fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(imageObject.memory == 0) 3591d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Images[image] = null 3592d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3593d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3594606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetImageSubresourceLayout( 3595d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3596d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image, 3597d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageSubresource* pSubresource, 3598d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSubresourceLayout* pLayout) { 3599d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3600d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 3601d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageObject.device == device) 3602d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3603d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3604d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3605d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Image view functions 3606d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3607d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3608d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateImageView( 3609d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3610d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageViewCreateInfo* pCreateInfo, 36113fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3612d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageView* pView) { 3613d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO) 3614d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3615d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3616d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(pCreateInfo.image) 3617d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageObject.device == device) 3618d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3619d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall view := ? 3620d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pView[0] = view 3621d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.ImageViews[view] = new!ImageViewObject(device: device, image: pCreateInfo.image) 3622d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3623d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3624d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3625d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3626d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 36275ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyImageView( 3628d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 362903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkImageView imageView, 36303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3631d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3632d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageViewObject := GetImageView(imageView) 3633d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageViewObject.device == device) 3634d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3635d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.ImageViews[imageView] = null 3636d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3637d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3638d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3639d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Shader functions 3640d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3641d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateShaderModule( 3642d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3643d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkShaderModuleCreateInfo* pCreateInfo, 36443fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3645d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkShaderModule* pShaderModule) { 3646d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO) 3647d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3648d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3649d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall shaderModule := ? 3650d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pShaderModule[0] = shaderModule 3651d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.ShaderModules[shaderModule] = new!ShaderModuleObject(device: device) 3652d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3653d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3654d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3655d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 36565ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyShaderModule( 3657d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 365803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkShaderModule shaderModule, 36593fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3660d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3661d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall shaderModuleObject := GetShaderModule(shaderModule) 3662d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(shaderModuleObject.device == device) 3663d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3664d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.ShaderModules[shaderModule] = null 3665d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3666d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3667d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3668d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Pipeline functions 3669d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3670d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreatePipelineCache( 3671d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3672d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineCacheCreateInfo* pCreateInfo, 36733fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3674d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineCache* pPipelineCache) { 3675d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO) 3676d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3677d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3678d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineCache := ? 3679d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pPipelineCache[0] = pipelineCache 3680d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.PipelineCaches[pipelineCache] = new!PipelineCacheObject(device: device) 3681d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3682d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3683d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3684d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 36855ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyPipelineCache( 3686d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 368703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkPipelineCache pipelineCache, 36883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3689d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3690d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineCacheObject := GetPipelineCache(pipelineCache) 3691d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineCacheObject.device == device) 3692d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3693d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.PipelineCaches[pipelineCache] = null 3694d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3695d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3696d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkGetPipelineCacheData( 3697d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3698d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineCache pipelineCache, 3699a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall platform.size_t* pDataSize, 3700d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall void* pData) { 3701d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3702d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineCacheObject := GetPipelineCache(pipelineCache) 3703d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineCacheObject.device == device) 3704d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3705d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3706d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3707d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3708d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkMergePipelineCaches( 3709d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 37103fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkPipelineCache dstCache, 3711d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 srcCacheCount, 3712d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineCache* pSrcCaches) { 3713d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 37143fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstCacheObject := GetPipelineCache(dstCache) 37153fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(dstCacheObject.device == device) 3716d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3717d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcCaches := pSrcCaches[0:srcCacheCount] 3718d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. srcCacheCount) { 3719d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcCache := srcCaches[i] 3720d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcCacheObject := GetPipelineCache(srcCache) 3721d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(srcCacheObject.device == device) 3722d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3723d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3724d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3725d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3726d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3727d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateGraphicsPipelines( 3728d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3729d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineCache pipelineCache, 373003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 createInfoCount, 3731d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkGraphicsPipelineCreateInfo* pCreateInfos, 37323fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3733d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipeline* pPipelines) { 3734d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 37355ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall if pipelineCache != NULL_HANDLE { 3736d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineCacheObject := GetPipelineCache(pipelineCache) 3737d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineCacheObject.device == device) 3738d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3739d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 374003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall createInfos := pCreateInfos[0:createInfoCount] 374103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pipelines := pPipelines[0:createInfoCount] 374203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. createInfoCount) { 3743d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipeline := ? 3744d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelines[i] = pipeline 3745d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Pipelines[pipeline] = new!PipelineObject(device: device) 3746d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3747d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3748d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3749d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3750d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3751d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateComputePipelines( 3752d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3753d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineCache pipelineCache, 375403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 createInfoCount, 3755d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkComputePipelineCreateInfo* pCreateInfos, 37563fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3757d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipeline* pPipelines) { 3758d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 37595ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall if pipelineCache != NULL_HANDLE { 3760d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineCacheObject := GetPipelineCache(pipelineCache) 3761d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineCacheObject.device == device) 3762d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3763d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 376403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall createInfos := pCreateInfos[0:createInfoCount] 376503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pipelines := pPipelines[0:createInfoCount] 376603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. createInfoCount) { 3767d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipeline := ? 3768d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelines[i] = pipeline 3769d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Pipelines[pipeline] = new!PipelineObject(device: device) 3770d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3771d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3772d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3773d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3774d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3775d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 37765ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyPipeline( 3777d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 377803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkPipeline pipeline, 37793fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3780d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3781d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineObjects := GetPipeline(pipeline) 3782d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineObjects.device == device) 3783d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3784d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Pipelines[pipeline] = null 3785d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3786d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3787d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3788d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Pipeline layout functions 3789d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3790d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3791d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreatePipelineLayout( 3792d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3793d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkPipelineLayoutCreateInfo* pCreateInfo, 37943fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3795d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineLayout* pPipelineLayout) { 3796d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO) 3797d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3798d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3799d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineLayout := ? 3800d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pPipelineLayout[0] = pipelineLayout 3801d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.PipelineLayouts[pipelineLayout] = new!PipelineLayoutObject(device: device) 3802d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3803d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3804d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3805d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3806d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 38075ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyPipelineLayout( 3808d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 380903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkPipelineLayout pipelineLayout, 38103fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3811d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3812d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineLayoutObjects := GetPipelineLayout(pipelineLayout) 3813d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineLayoutObjects.device == device) 3814d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3815d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.PipelineLayouts[pipelineLayout] = null 3816d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3817d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3818d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3819d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Sampler functions 3820d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3821d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3822d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateSampler( 3823d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3824d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkSamplerCreateInfo* pCreateInfo, 38253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3826d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkSampler* pSampler) { 3827d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO) 3828d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3829d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3830d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall sampler := ? 3831d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pSampler[0] = sampler 3832d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Samplers[sampler] = new!SamplerObject(device: device) 3833d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3834d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3835d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3836d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3837d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 38385ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroySampler( 3839d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 384003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkSampler sampler, 38413fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3842d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3843d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall samplerObject := GetSampler(sampler) 3844d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(samplerObject.device == device) 3845d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3846d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Samplers[sampler] = null 3847d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3848d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3849d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3850d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Descriptor set functions 3851d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3852d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3853d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateDescriptorSetLayout( 3854d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3855d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkDescriptorSetLayoutCreateInfo* pCreateInfo, 38563fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3857d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDescriptorSetLayout* pSetLayout) { 3858d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO) 3859d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3860d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3861d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall setLayout := ? 3862d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pSetLayout[0] = setLayout 3863d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.DescriptorSetLayouts[setLayout] = new!DescriptorSetLayoutObject(device: device) 3864d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3865d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3866d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3867d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3868d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 38695ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyDescriptorSetLayout( 3870d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 387103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkDescriptorSetLayout descriptorSetLayout, 38723fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3873d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3874d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout) 3875d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorSetLayoutObject.device == device) 3876d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3877d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.DescriptorSetLayouts[descriptorSetLayout] = null 3878d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3879d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3880d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3881d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateDescriptorPool( 3882d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 388303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall const VkDescriptorPoolCreateInfo* pCreateInfo, 38843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3885d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDescriptorPool* pDescriptorPool) { 3886d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO) 3887d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3888d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3889d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorPool := ? 3890d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pDescriptorPool[0] = descriptorPool 3891d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.DescriptorPools[descriptorPool] = new!DescriptorPoolObject(device: device) 3892d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3893d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3894d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3895d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3896d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 38975ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyDescriptorPool( 3898d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 389903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkDescriptorPool descriptorPool, 39003fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 3901d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3902d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorPoolObject := GetDescriptorPool(descriptorPool) 3903d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorPoolObject.device == device) 3904d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3905d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.DescriptorPools[descriptorPool] = null 3906d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3907d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3908d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 3909d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkResetDescriptorPool( 3910d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3911fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkDescriptorPool descriptorPool, 3912fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall VkDescriptorPoolResetFlags flags) { 3913d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3914d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorPoolObject := GetDescriptorPool(descriptorPool) 3915d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorPoolObject.device == device) 3916d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3917d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3918d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3919d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3920d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 39213fbc856120217247c72fb5ed88500000f3881c45Jesse Hallcmd VkResult vkAllocateDescriptorSets( 3922d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 39233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkDescriptorSetAllocateInfo* pAllocateInfo, 39245ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDescriptorSet* pDescriptorSets) { 3925d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 39263fbc856120217247c72fb5ed88500000f3881c45Jesse Hall allocInfo := pAllocateInfo[0] 3927fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool) 3928d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 392903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount] 393003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. allocInfo.setCount) { 3931d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall setLayout := setLayouts[i] 3932d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall setLayoutObject := GetDescriptorSetLayout(setLayout) 3933d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(setLayoutObject.device == device) 3934d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3935d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 393603b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall descriptorSets := pDescriptorSets[0:allocInfo.setCount] 393703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. allocInfo.setCount) { 3938d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorSet := ? 3939d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorSets[i] = descriptorSet 3940d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device) 3941d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3942d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3943d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 3944d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3945d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3946f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hallcmd VkResult vkFreeDescriptorSets( 3947f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall VkDevice device, 3948f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall VkDescriptorPool descriptorPool, 394903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 descriptorSetCount, 3950f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall const VkDescriptorSet* pDescriptorSets) { 3951f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall deviceObject := GetDevice(device) 3952f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall descriptorPoolObject := GetDescriptorPool(descriptorPool) 3953f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall 395403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall descriptorSets := pDescriptorSets[0:descriptorSetCount] 395503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. descriptorSetCount) { 3956f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall descriptorSet := descriptorSets[i] 3957f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall descriptorSetObject := GetDescriptorSet(descriptorSet) 3958f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall assert(descriptorSetObject.device == device) 3959f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall State.DescriptorSets[descriptorSet] = null 3960f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall } 3961f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall 3962f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall return ? 3963f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall} 3964f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall 39655ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkUpdateDescriptorSets( 3966d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3967b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 descriptorWriteCount, 3968d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkWriteDescriptorSet* pDescriptorWrites, 3969b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall u32 descriptorCopyCount, 3970d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkCopyDescriptorSet* pDescriptorCopies) { 3971d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3972d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3973b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall descriptorWrites := pDescriptorWrites[0:descriptorWriteCount] 3974b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall for i in (0 .. descriptorWriteCount) { 3975d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorWrite := descriptorWrites[i] 39763fbc856120217247c72fb5ed88500000f3881c45Jesse Hall descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet) 3977d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorWriteObject.device == device) 3978d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3979d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3980b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall descriptorCopies := pDescriptorCopies[0:descriptorCopyCount] 3981b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall for i in (0 .. descriptorCopyCount) { 3982d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorCopy := descriptorCopies[i] 39833fbc856120217247c72fb5ed88500000f3881c45Jesse Hall descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet) 3984d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorCopyObject.device == device) 3985d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 3986d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 3987d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3988d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3989d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Framebuffer functions 3990d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 3991d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 3992d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateFramebuffer( 3993d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 3994d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkFramebufferCreateInfo* pCreateInfo, 39953fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 3996d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkFramebuffer* pFramebuffer) { 3997d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO) 3998d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 3999d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4000d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall framebuffer := ? 4001d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pFramebuffer[0] = framebuffer 4002d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Framebuffers[framebuffer] = new!FramebufferObject(device: device) 4003d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4004d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 4005d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4006d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4007d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 40085ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyFramebuffer( 4009d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 401003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkFramebuffer framebuffer, 40113fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 4012d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 4013d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall framebufferObject := GetFramebuffer(framebuffer) 4014d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(framebufferObject.device == device) 4015d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4016d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.Framebuffers[framebuffer] = null 4017d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4018d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4019d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4020d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Renderpass functions 4021d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4022d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 4023d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateRenderPass( 4024d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 4025d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkRenderPassCreateInfo* pCreateInfo, 40263fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 4027d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRenderPass* pRenderPass) { 4028d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO) 4029d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 4030d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4031d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall renderpass := ? 4032d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pRenderPass[0] = renderpass 4033d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.RenderPasses[renderpass] = new!RenderPassObject(device: device) 4034d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4035d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 4036d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4037d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4038d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 40395ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyRenderPass( 4040d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 404103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkRenderPass renderPass, 40423fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 4043d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 4044d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall renderPassObject := GetRenderPass(renderPass) 4045d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(renderPassObject.device == device) 4046d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4047d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall State.RenderPasses[renderPass] = null 4048d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4049d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4050606a54e194a5884c628130ba2eda1b3bfbc157d7Jesse Hallcmd void vkGetRenderAreaGranularity( 4051d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 4052d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkRenderPass renderPass, 4053d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkExtent2D* pGranularity) { 4054d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 4055d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall renderPassObject := GetRenderPass(renderPass) 4056d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4057d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall granularity := ? 4058d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pGranularity[0] = granularity 4059d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4060d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4061d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Command pool functions 4062d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4063d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkCreateCommandPool( 4064d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 40653fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkCommandPoolCreateInfo* pCreateInfo, 40663fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator, 40673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPool* pCommandPool) { 40683fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO) 4069d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 4070d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 40713fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandPool := ? 40723fbc856120217247c72fb5ed88500000f3881c45Jesse Hall pCommandPool[0] = commandPool 40733fbc856120217247c72fb5ed88500000f3881c45Jesse Hall State.CommandPools[commandPool] = new!CommandPoolObject(device: device) 4074d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4075d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 4076d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4077d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 40785ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkDestroyCommandPool( 4079d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 40803fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPool commandPool, 40813fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkAllocationCallbacks* pAllocator) { 4082d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 40833fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandPoolObject := GetCommandPool(commandPool) 40843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandPoolObject.device == device) 4085d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 40863fbc856120217247c72fb5ed88500000f3881c45Jesse Hall State.CommandPools[commandPool] = null 4087d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4088d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4089d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkResetCommandPool( 4090d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 40913fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPool commandPool, 40923fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPoolResetFlags flags) { 4093d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 40943fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandPoolObject := GetCommandPool(commandPool) 40953fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandPoolObject.device == device) 4096d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4097d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 4098d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4099d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4100d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Command buffer functions 4101d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41023fbc856120217247c72fb5ed88500000f3881c45Jesse Hallmacro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) { 41033fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 41043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer 4105d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41063fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 41073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.boundObjects[as!u64(obj)] = memory 4108d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4109d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41103fbc856120217247c72fb5ed88500000f3881c45Jesse Hallmacro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) { 41113fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject := GetDeviceMemory(memory) 41123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall memoryObject.boundCommandBuffers[commandBuffer] = null 4113d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41143fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 41153fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.boundObjects[as!u64(obj)] = null 4116d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4117d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4118d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 41193fbc856120217247c72fb5ed88500000f3881c45Jesse Hallcmd VkResult vkAllocateCommandBuffers( 4120d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 41213fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkCommandBufferAllocateInfo* pAllocateInfo, 41223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer* pCommandBuffers) { 4123f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO) 4124d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41253dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall count := pAllocateInfo[0].commandBufferCount 41263fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBuffers := pCommandBuffers[0:count] 4127fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall for i in (0 .. count) { 41283fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBuffer := ? 41293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBuffers[i] = commandBuffer 41303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device) 4131fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall } 4132d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4133d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 4134d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4135d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4136d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("system") 4137fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hallcmd void vkFreeCommandBuffers( 4138d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device, 41393fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandPool commandPool, 414003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 commandBufferCount, 41413fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkCommandBuffer* pCommandBuffers) { 4142d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall deviceObject := GetDevice(device) 4143d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 41443fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBuffers := pCommandBuffers[0:commandBufferCount] 414503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. commandBufferCount) { 41463fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffers[i]) 41473fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == device) 4148fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall // TODO: iterate over boundObjects and clear memory bindings 41493fbc856120217247c72fb5ed88500000f3881c45Jesse Hall State.CommandBuffers[commandBuffers[i]] = null 4150fbf97b0e5e25349b951dce1016b263ec3acbf376Jesse Hall } 4151d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4152d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4153d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4154d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkBeginCommandBuffer( 41553fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 41563fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkCommandBufferBeginInfo* pBeginInfo) { 41573fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO) 41583fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4159d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4160d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // TODO: iterate over boundObjects and clear memory bindings 4161d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4162d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 4163d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4164d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4165d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4166d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkEndCommandBuffer( 41673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer) { 41683fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4169d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4170d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 4171d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4172d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4173d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4174d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd VkResult vkResetCommandBuffer( 41753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 41763fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBufferResetFlags flags) { 41773fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4178d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4179d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // TODO: iterate over boundObjects and clear memory bindings 4180d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4181d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return ? 4182d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4183d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4184d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4185d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Command buffer building functions 4186d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4187d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4188d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBindPipeline( 41893fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4190d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineBindPoint pipelineBindPoint, 4191d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipeline pipeline) { 41923fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4193d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall pipelineObject := GetPipeline(pipeline) 41943fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == pipelineObject.device) 4195d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4196d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hall queue := switch (pipelineBindPoint) { 4197d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT 4198d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT 4199d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 42003fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue) 4201d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4202d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4203d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 42045ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetViewport( 42053fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4206f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall u32 firstViewport, 42075ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 viewportCount, 42085ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkViewport* pViewports) { 42093fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 42103fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 42115ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 4212d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 42135ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall@threadSafety("app") 42145ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetScissor( 42153fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4216f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall u32 firstScissor, 42175ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 scissorCount, 42185ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkRect2D* pScissors) { 42193fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 42203fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4221d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4222d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4223d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 42245ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetLineWidth( 42253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 42265ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 lineWidth) { 42273fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 42283fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 42295ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 4230d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 42315ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall@threadSafety("app") 42325ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetDepthBias( 42333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4234a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall f32 depthBiasConstantFactor, 42355ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 depthBiasClamp, 4236a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall f32 depthBiasSlopeFactor) { 42373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 42383fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4239d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4240d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4241d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 42425ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetBlendConstants( 42433fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 42445ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // TODO(jessehall): apic only supports 'const' on pointer types. Using 42455ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // an annotation as a quick hack to pass this to the template without 42465ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall // having to modify the AST and semantic model. 4247b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall @readonly f32[4] blendConstants) { 42483fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 42493fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 42505ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 4251d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 42525ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall@threadSafety("app") 42535ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetDepthBounds( 42543fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 42555ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 minDepthBounds, 42565ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall f32 maxDepthBounds) { 42573fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 42583fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4259d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4260d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4261d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 42625ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetStencilCompareMask( 42633fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 42645ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkStencilFaceFlags faceMask, 426565ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 compareMask) { 42663fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 42673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 42685ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 4269d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 42705ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall@threadSafety("app") 42715ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetStencilWriteMask( 42723fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 42735ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkStencilFaceFlags faceMask, 427465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 writeMask) { 42753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 42763fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 42775ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall} 42785ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall 42795ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall@threadSafety("app") 42805ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hallcmd void vkCmdSetStencilReference( 42813fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 42825ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkStencilFaceFlags faceMask, 428365ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall u32 reference) { 42843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 42853fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4286d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4287d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4288d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4289d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBindDescriptorSets( 42903fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4291d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineBindPoint pipelineBindPoint, 4292d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineLayout layout, 4293d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 firstSet, 429403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 descriptorSetCount, 4295d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkDescriptorSet* pDescriptorSets, 4296d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 dynamicOffsetCount, 4297d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const u32* pDynamicOffsets) { 42983fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4299d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 430003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall descriptorSets := pDescriptorSets[0:descriptorSetCount] 430103b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall for i in (0 .. descriptorSetCount) { 4302d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorSet := descriptorSets[i] 4303d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall descriptorSetObject := GetDescriptorSet(descriptorSet) 43043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == descriptorSetObject.device) 4305d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4306d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4307d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount] 4308d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. dynamicOffsetCount) { 4309d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall dynamicOffset := dynamicOffsets[i] 4310d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4311d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4312d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hall queue := switch (pipelineBindPoint) { 4313d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT 4314d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT 4315d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 43163fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue) 4317d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4318d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4319d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4320d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBindIndexBuffer( 43213fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4322d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer, 43235ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset, 4324d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkIndexType indexType) { 43253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4326d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 43273fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == bufferObject.device) 4328d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 4330d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4332d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4333d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4334d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4335d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBindVertexBuffers( 43363fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4337f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall u32 firstBinding, 4338d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 bindingCount, 4339d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkBuffer* pBuffers, 43405ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkDeviceSize* pOffsets) { 43413fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4342d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4343f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall // TODO: check if not [firstBinding:firstBinding+bindingCount] 4344d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall buffers := pBuffers[0:bindingCount] 4345d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall offsets := pOffsets[0:bindingCount] 4346d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. bindingCount) { 4347d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall buffer := buffers[i] 4348d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall offset := offsets[i] 4349d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 43503fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == bufferObject.device) 4351d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43523fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 4353d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4354d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43553fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4356d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4357d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4358d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4359d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdDraw( 43603fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4361d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 vertexCount, 43625ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 instanceCount, 43635ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 firstVertex, 43645ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 firstInstance) { 43653fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4366d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4368d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4369d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4370d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4371d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdDrawIndexed( 43723fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4373d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 indexCount, 43745ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 instanceCount, 43755ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 firstIndex, 4376d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall s32 vertexOffset, 43775ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall u32 firstInstance) { 43783fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4379d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43803fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4381d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4382d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4383d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4384d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdDrawIndirect( 43853fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4386d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer, 43875ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset, 438803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 drawCount, 4389d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 stride) { 43903fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4391d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 43923fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == bufferObject.device) 4393d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43943fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 4395d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 43963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4397d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4398d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4399d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4400d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdDrawIndexedIndirect( 44013fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4402d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer, 44035ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset, 440403b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 drawCount, 4405d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 stride) { 44063fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4407d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 44083fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == bufferObject.device) 4409d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 44103fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 4411d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 44123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4413d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4414d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4415d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4416d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdDispatch( 44173fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4418d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 x, 4419d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 y, 4420d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 z) { 44213fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4422d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 44233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT) 4424d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4425d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4426d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4427d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdDispatchIndirect( 44283fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4429d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer, 44305ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize offset) { 44313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4432d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bufferObject := GetBuffer(buffer) 44333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == bufferObject.device) 4434d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 44353fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 4436d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 44373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT) 4438d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4439d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4440d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4441d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdCopyBuffer( 44423fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4443d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer srcBuffer, 44443fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkBuffer dstBuffer, 4445d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 regionCount, 4446d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkBufferCopy* pRegions) { 44473fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4448d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcBufferObject := GetBuffer(srcBuffer) 44493fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstBufferObject := GetBuffer(dstBuffer) 44503fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == srcBufferObject.device) 44513fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstBufferObject.device) 4452d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4453d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall regions := pRegions[0:regionCount] 4454d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. regionCount) { 4455d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall region := regions[i] 4456d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4457d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 44583fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory) 44593fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory) 4460d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 446165ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 4462d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4463d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4464d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4465d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdCopyImage( 44663fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4467d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage srcImage, 4468d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout srcImageLayout, 44693fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImage dstImage, 44703fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImageLayout dstImageLayout, 4471d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 regionCount, 4472d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageCopy* pRegions) { 44733fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4474d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcImageObject := GetImage(srcImage) 44753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstImageObject := GetImage(dstImage) 44763fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == srcImageObject.device) 44773fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstImageObject.device) 4478d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4479d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall regions := pRegions[0:regionCount] 4480d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. regionCount) { 4481d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall region := regions[i] 4482d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4483d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 44843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) 44853fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) 4486d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 448765ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 4488d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4489d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4490d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4491d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBlitImage( 44923fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4493d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage srcImage, 4494d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout srcImageLayout, 44953fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImage dstImage, 44963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImageLayout dstImageLayout, 4497d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 regionCount, 4498d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageBlit* pRegions, 449923ff73fe377acb99b5ea1824d5a11320bdaee745Jesse Hall VkFilter filter) { 45003fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4501d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcImageObject := GetImage(srcImage) 45023fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstImageObject := GetImage(dstImage) 45033fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == srcImageObject.device) 45043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstImageObject.device) 4505d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4506d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall regions := pRegions[0:regionCount] 4507d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. regionCount) { 4508d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall region := regions[i] 4509d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4510d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 45113fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) 45123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) 4513d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 45143fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4515d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4516d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4517d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4518d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdCopyBufferToImage( 45193fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4520d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer srcBuffer, 45213fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImage dstImage, 45223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImageLayout dstImageLayout, 4523d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 regionCount, 4524d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkBufferImageCopy* pRegions) { 45253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4526d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcBufferObject := GetBuffer(srcBuffer) 45273fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstImageObject := GetImage(dstImage) 45283fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == srcBufferObject.device) 45293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstImageObject.device) 4530d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4531d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall regions := pRegions[0:regionCount] 4532d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. regionCount) { 4533d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall region := regions[i] 4534d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4535d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 45363fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory) 45373fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) 4538d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 453965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 4540d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4541d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4542d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4543d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdCopyImageToBuffer( 45443fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4545d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage srcImage, 4546d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout srcImageLayout, 45473fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkBuffer dstBuffer, 4548d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 regionCount, 4549d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkBufferImageCopy* pRegions) { 45503fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4551d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcImageObject := GetImage(srcImage) 45523fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstBufferObject := GetBuffer(dstBuffer) 45533fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == srcImageObject.device) 45543fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstBufferObject.device) 4555d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4556d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall regions := pRegions[0:regionCount] 4557d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. regionCount) { 4558d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall region := regions[i] 4559d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4560d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 45613fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) 45623fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory) 4563d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 456465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 4565d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4566d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4567d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4568d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdUpdateBuffer( 45693fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 45703fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkBuffer dstBuffer, 45713fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize dstOffset, 45725ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall VkDeviceSize dataSize, 4573d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const u32* pData) { 45743fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 45753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstBufferObject := GetBuffer(dstBuffer) 45763fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstBufferObject.device) 4577d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4578d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall data := pData[0:dataSize] 4579d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 45803fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory) 4581d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 458265ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 4583d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4584d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4585d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4586d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdFillBuffer( 45873fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 45883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkBuffer dstBuffer, 45893fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize dstOffset, 4590b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkDeviceSize size, 4591d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 data) { 45923fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 45933fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstBufferObject := GetBuffer(dstBuffer) 45943fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstBufferObject.device) 4595d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 459665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 4597d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4598d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4599d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4600d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdClearColorImage( 46013fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4602d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image, 4603d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout imageLayout, 4604d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkClearColorValue* pColor, 4605d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 rangeCount, 4606d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageSubresourceRange* pRanges) { 46073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4608d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 46093fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == imageObject.device) 4610d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4611d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall ranges := pRanges[0:rangeCount] 4612d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. rangeCount) { 4613d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall range := ranges[i] 4614d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4615d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 46163fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, image, imageObject.memory) 4617d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 46183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4619d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4620d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4621d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4622d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdClearDepthStencilImage( 46233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4624d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image, 4625d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout imageLayout, 46265ae3abb3ca6728de04935b0c81bcdbdfc37b0d47Jesse Hall const VkClearDepthStencilValue* pDepthStencil, 4627d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 rangeCount, 4628d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageSubresourceRange* pRanges) { 46293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4630d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall imageObject := GetImage(image) 46313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == imageObject.device) 4632d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4633d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall ranges := pRanges[0:rangeCount] 4634d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. rangeCount) { 4635d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall range := ranges[i] 4636d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4637d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 46383fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, image, imageObject.memory) 4639d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 46403fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4641d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4642d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4643d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4644ae38f7355fd03b777313e13586585a74e0dee05bJesse Hallcmd void vkCmdClearAttachments( 46453fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4646ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall u32 attachmentCount, 4647ae38f7355fd03b777313e13586585a74e0dee05bJesse Hall const VkClearAttachment* pAttachments, 4648d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 rectCount, 4649a15a4bf4bafd6114ae8f28c2df2fc622cb3baaceJesse Hall const VkClearRect* pRects) { 46503fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4651d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4652d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall rects := pRects[0:rectCount] 4653d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. rectCount) { 4654d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall rect := rects[i] 4655d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4656d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 46573fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4658d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4659d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4660d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4661d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdResolveImage( 46623fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4663d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage srcImage, 4664d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImageLayout srcImageLayout, 46653fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImage dstImage, 46663fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkImageLayout dstImageLayout, 4667d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 regionCount, 4668d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkImageResolve* pRegions) { 46693fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4670d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall srcImageObject := GetImage(srcImage) 46713fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstImageObject := GetImage(dstImage) 46723fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == srcImageObject.device) 46733fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstImageObject.device) 4674d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4675d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall regions := pRegions[0:regionCount] 4676d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. regionCount) { 4677d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall region := regions[i] 4678d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4679d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 46803fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) 46813fbc856120217247c72fb5ed88500000f3881c45Jesse Hall bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) 4682d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 46833fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4684d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4685d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4686d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4687d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdSetEvent( 46883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4689d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEvent event, 4690d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineStageFlags stageMask) { 46913fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4692d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 46933fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == eventObject.device) 4694d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4695d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4696d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4697d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdResetEvent( 46983fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4699d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkEvent event, 4700d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineStageFlags stageMask) { 47013fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4702d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 47033fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == eventObject.device) 4704d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4705d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4706d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4707d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdWaitEvents( 47083fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4709d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 eventCount, 4710d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkEvent* pEvents, 4711d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineStageFlags srcStageMask, 47123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkPipelineStageFlags dstStageMask, 47133fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 memoryBarrierCount, 47143dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall const VkMemoryBarrier* pMemoryBarriers, 47153dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 bufferMemoryBarrierCount, 47163dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall const VkBufferMemoryBarrier* pBufferMemoryBarriers, 47173dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 imageMemoryBarrierCount, 47183dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall const VkImageMemoryBarrier* pImageMemoryBarriers) { 47193fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4720d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4721d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall events := pEvents[0:eventCount] 4722d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall for i in (0 .. eventCount) { 4723d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall event := events[i] 4724d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall eventObject := GetEvent(event) 47253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == eventObject.device) 4726d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4727d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 47283dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall memoryBarriers := pMemoryBarriers[0:memoryBarrierCount] 47293fbc856120217247c72fb5ed88500000f3881c45Jesse Hall for i in (0 .. memoryBarrierCount) { 47303dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall memoryBarrier := memoryBarriers[i] 47313dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall } 47323dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount] 47333dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall for i in (0 .. bufferMemoryBarrierCount) { 47343dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall bufferMemoryBarrier := bufferMemoryBarriers[i] 47353dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall bufferObject := GetBuffer(bufferMemoryBarrier.buffer) 47363dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall assert(bufferObject.device == commandBufferObject.device) 47373dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall } 47383dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount] 47393dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall for i in (0 .. imageMemoryBarrierCount) { 47403dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall imageMemoryBarrier := imageMemoryBarriers[i] 47413dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall imageObject := GetImage(imageMemoryBarrier.image) 47423dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall assert(imageObject.device == commandBufferObject.device) 4743d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4744d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4745d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4746d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4747d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdPipelineBarrier( 47483fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4749d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineStageFlags srcStageMask, 47503fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkPipelineStageFlags dstStageMask, 4751dc6d36cb7f1d35059ae8153168e379fc925cb468Jesse Hall VkDependencyFlags dependencyFlags, 47523fbc856120217247c72fb5ed88500000f3881c45Jesse Hall u32 memoryBarrierCount, 47533dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall const VkMemoryBarrier* pMemoryBarriers, 47543dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 bufferMemoryBarrierCount, 47553dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall const VkBufferMemoryBarrier* pBufferMemoryBarriers, 47563dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 imageMemoryBarrierCount, 47573dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall const VkImageMemoryBarrier* pImageMemoryBarriers) { 47583fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4759d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 47603dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall memoryBarriers := pMemoryBarriers[0:memoryBarrierCount] 47613fbc856120217247c72fb5ed88500000f3881c45Jesse Hall for i in (0 .. memoryBarrierCount) { 47623dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall memoryBarrier := memoryBarriers[i] 47633dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall } 47643dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount] 47653dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall for i in (0 .. bufferMemoryBarrierCount) { 47663dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall bufferMemoryBarrier := bufferMemoryBarriers[i] 47673dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall bufferObject := GetBuffer(bufferMemoryBarrier.buffer) 47683dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall assert(bufferObject.device == commandBufferObject.device) 47693dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall } 47703dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount] 47713dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall for i in (0 .. imageMemoryBarrierCount) { 47723dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall imageMemoryBarrier := imageMemoryBarriers[i] 47733dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall imageObject := GetImage(imageMemoryBarrier.image) 47743dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall assert(imageObject.device == commandBufferObject.device) 4775d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4776d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4777d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4778d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4779d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBeginQuery( 47803fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4781d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPool queryPool, 47823dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 query, 4783d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryControlFlags flags) { 47843fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4785d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPoolObject := GetQueryPool(queryPool) 47863fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == queryPoolObject.device) 4787d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4788d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4789d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4790d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdEndQuery( 47913fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4792d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPool queryPool, 47933dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 query) { 47943fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4795d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPoolObject := GetQueryPool(queryPool) 47963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == queryPoolObject.device) 4797d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4798d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4799d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4800d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdResetQueryPool( 48013fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4802d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPool queryPool, 4803f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall u32 firstQuery, 4804d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queryCount) { 48053fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4806d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPoolObject := GetQueryPool(queryPool) 48073fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == queryPoolObject.device) 4808d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4809d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4810d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4811d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdWriteTimestamp( 48123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 48136f39a6d1c6202b5d1bb0aa0dc9b2e130e5b73666Jesse Hall VkPipelineStageFlagBits pipelineStage, 4814a3a7a1d37bdfad56245b75edac49f8aceded321dJesse Hall VkQueryPool queryPool, 48153dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 query) { 48163fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4817a3a7a1d37bdfad56245b75edac49f8aceded321dJesse Hall queryPoolObject := GetQueryPool(queryPool) 48183fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == queryPoolObject.device) 4819d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4820d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4821d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4822d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdCopyQueryPoolResults( 48233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4824d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryPool queryPool, 4825f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall u32 firstQuery, 4826d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall u32 queryCount, 48273fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkBuffer dstBuffer, 48283fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize dstOffset, 4829a9bb62b44be381292b893055cd01cdc89ba55c97Jesse Hall VkDeviceSize stride, 4830d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueryResultFlags flags) { 48313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4832d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall queryPoolObject := GetQueryPool(queryPool) 48333fbc856120217247c72fb5ed88500000f3881c45Jesse Hall dstBufferObject := GetBuffer(dstBuffer) 48343fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == queryPoolObject.device) 48353fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == dstBufferObject.device) 4836d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4837d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4838d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdPushConstants( 48393fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4840d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPipelineLayout layout, 4841d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkShaderStageFlags stageFlags, 484203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 offset, 484303b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32 size, 4844f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall const void* pValues) { 48453fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4846d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall layoutObject := GetPipelineLayout(layout) 48473fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == layoutObject.device) 4848d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4849d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4850d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4851d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdBeginRenderPass( 48523fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 4853d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall const VkRenderPassBeginInfo* pRenderPassBegin, 485465ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkSubpassContents contents) { 48553fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4856d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall renderPassObject := GetRenderPass(pRenderPassBegin.renderPass) 4857d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer) 48583fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == renderPassObject.device) 48593fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == framebufferObject.device) 4860d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 48613fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4862d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4863d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4864d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdNextSubpass( 48653fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 486665ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall VkSubpassContents contents) { 48673fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4868d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4869d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4870d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@threadSafety("app") 4871d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdEndRenderPass( 48723fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer) { 48733fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 4874d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 48753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 4876d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4877d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 4878d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallcmd void vkCmdExecuteCommands( 48793fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkCommandBuffer commandBuffer, 48803dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 commandBufferCount, 48813fbc856120217247c72fb5ed88500000f3881c45Jesse Hall const VkCommandBuffer* pCommandBuffers) { 48823fbc856120217247c72fb5ed88500000f3881c45Jesse Hall commandBufferObject := GetCommandBuffer(commandBuffer) 48833fbc856120217247c72fb5ed88500000f3881c45Jesse Hall 48843dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall commandBuffers := pCommandBuffers[0:commandBufferCount] 48853dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall for i in (0 .. commandBufferCount) { 48863fbc856120217247c72fb5ed88500000f3881c45Jesse Hall secondaryCommandBuffer := commandBuffers[i] 48873fbc856120217247c72fb5ed88500000f3881c45Jesse Hall secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer) 48883fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBufferObject.device == secondaryCommandBufferObject.device) 4889d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall } 4890d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 4891d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 48923e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 48931356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd void vkDestroySurfaceKHR( 48941356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 48950e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall VkSurfaceKHR surface, 48960e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator) { 48971356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 48981356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall surfaceObject := GetSurface(surface) 48991356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall assert(surfaceObject.instance == instance) 490088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 49011356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall State.Surfaces[surface] = null 49021356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 49031356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 49043e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 4905a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR( 49061356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPhysicalDevice physicalDevice, 49071356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 queueFamilyIndex, 4908b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkSurfaceKHR surface, 4909b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkBool32* pSupported) { 49102818f93c5bc8b186d3455a1ea2fce900e7403465Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 49112818f93c5bc8b186d3455a1ea2fce900e7403465Jesse Hall 4912b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall return ? 49132818f93c5bc8b186d3455a1ea2fce900e7403465Jesse Hall} 49142818f93c5bc8b186d3455a1ea2fce900e7403465Jesse Hall 49153e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 4916b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hallcmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR( 4917b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkPhysicalDevice physicalDevice, 49181356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR surface, 4919b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) { 4920b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 492188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 4922b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall surfaceCapabilities := ? 4923b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall pSurfaceCapabilities[0] = surfaceCapabilities 492488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 492588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 492688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 492788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 49283e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 4929b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hallcmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR( 4930b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkPhysicalDevice physicalDevice, 49311356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR surface, 493203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pSurfaceFormatCount, 49331356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceFormatKHR* pSurfaceFormats) { 4934b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 493588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 493688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine count := as!u32(?) 493703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pSurfaceFormatCount[0] = count 493888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine surfaceFormats := pSurfaceFormats[0:count] 493988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 494088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine for i in (0 .. count) { 494188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine surfaceFormat := ? 494288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine surfaceFormats[i] = surfaceFormat 494388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine } 494488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 494588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 494688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 494788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 49483e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_surface") 4949b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hallcmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR( 4950b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall VkPhysicalDevice physicalDevice, 49511356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR surface, 495203b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPresentModeCount, 49531356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPresentModeKHR* pPresentModes) { 4954b00daadc165d4c3fad13b7cc4aeaa1e85e6df9a0Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 495588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 495688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine count := as!u32(?) 495703b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pPresentModeCount[0] = count 495888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine presentModes := pPresentModes[0:count] 495988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 496088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine for i in (0 .. count) { 496188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine presentMode := ? 496288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine presentModes[i] = presentMode 496388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine } 496488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 496588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 496688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 496788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 49683e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 496988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentinecmd VkResult vkCreateSwapchainKHR( 497088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkDevice device, 497188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine const VkSwapchainCreateInfoKHR* pCreateInfo, 49720e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 497388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkSwapchainKHR* pSwapchain) { 49741356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR) 497588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine deviceObject := GetDevice(device) 497688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 497788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine swapchain := ? 497888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine pSwapchain[0] = swapchain 497988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine State.Swapchains[swapchain] = new!SwapchainObject(device: device) 498088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 498188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 498288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 498388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 49843e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 49851356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd void vkDestroySwapchainKHR( 498688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkDevice device, 49870e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall VkSwapchainKHR swapchain, 49880e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator) { 498988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine deviceObject := GetDevice(device) 499088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine swapchainObject := GetSwapchain(swapchain) 499188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine assert(swapchainObject.device == device) 499288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 499388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine State.Swapchains[swapchain] = null 499488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 499588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 49963e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 499788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentinecmd VkResult vkGetSwapchainImagesKHR( 499888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkDevice device, 499988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkSwapchainKHR swapchain, 500003b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pSwapchainImageCount, 500188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkImage* pSwapchainImages) { 500288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine deviceObject := GetDevice(device) 500388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 500488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine count := as!u32(?) 500503b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall pSwapchainImageCount[0] = count 500688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine swapchainImages := pSwapchainImages[0:count] 500788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 500888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine for i in (0 .. count) { 500988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine swapchainImage := ? 501088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine swapchainImages[i] = swapchainImage 50111356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall State.Images[swapchainImage] = new!ImageObject(device: device) 501288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine } 501388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 501488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 501588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 501688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 50173e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 501888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentinecmd VkResult vkAcquireNextImageKHR( 501988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkDevice device, 502088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkSwapchainKHR swapchain, 502188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine u64 timeout, 502288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkSemaphore semaphore, 50231356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkFence fence, 502488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine u32* pImageIndex) { 502588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine deviceObject := GetDevice(device) 502688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine swapchainObject := GetSwapchain(swapchain) 502788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 502888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine imageIndex := ? 502988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine pImageIndex[0] = imageIndex 503088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 503188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 503288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 503388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 50343e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_swapchain") 503588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentinecmd VkResult vkQueuePresentKHR( 503688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkQueue queue, 5037f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall const VkPresentInfoKHR* pPresentInfo) { 503888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine queueObject := GetQueue(queue) 503988594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 504088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine presentInfo := ? 504188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine pPresentInfo[0] = presentInfo 504288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 504388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return ? 504488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 504588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 50463e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 50471356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR( 50481356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPhysicalDevice physicalDevice, 504903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 50501356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayPropertiesKHR* pProperties) { 50511356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 50521356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 50531356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 50541356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 50553e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 5056a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR( 5057a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 5058a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32* pPropertyCount, 5059a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDisplayPlanePropertiesKHR* pProperties) { 5060a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 5061a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 5062a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 5063a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 50643e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 5065a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR( 5066a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 50673dd678a6a30e2d94bfd570ec43ffd379e9c5d409Jesse Hall u32 planeIndex, 5068f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall u32* pDisplayCount, 5069f4ab2b18391ab5045b44af9ea1d5698af7c2a0cdJesse Hall VkDisplayKHR* pDisplays) { 5070a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 5071a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 5072a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 5073a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 50743e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 50751356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkGetDisplayModePropertiesKHR( 50761356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPhysicalDevice physicalDevice, 50771356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayKHR display, 507803b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall u32* pPropertyCount, 507903b6fe1b099764c6010c173c1416ea102cdfe5a4Jesse Hall VkDisplayModePropertiesKHR* pProperties) { 50801356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 50811356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 50821356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 50831356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 50843e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 50851356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkCreateDisplayModeKHR( 50861356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPhysicalDevice physicalDevice, 50871356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayKHR display, 50881356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall const VkDisplayModeCreateInfoKHR* pCreateInfo, 50890e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 50901356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkDisplayModeKHR* pMode) { 50911356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 50921356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 50931356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 50941356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 50953e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 5096a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkGetDisplayPlaneCapabilitiesKHR( 50971356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkPhysicalDevice physicalDevice, 50989ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall VkDisplayModeKHR mode, 50991356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall u32 planeIndex, 5100a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkDisplayPlaneCapabilitiesKHR* pCapabilities) { 51011356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 51021356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 51031356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 51041356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 51053e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_display") 5106a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkCreateDisplayPlaneSurfaceKHR( 5107a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkInstance instance, 5108a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, 51090e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 5110a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkSurfaceKHR* pSurface) { 5111a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 5112a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 5113a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 51149ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall@extension("VK_KHR_display_swapchain") 51159ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hallcmd VkResult vkCreateSharedSwapchainsKHR( 51169ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall VkDevice device, 51179ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall u32 swapchainCount, 51189ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall const VkSwapchainCreateInfoKHR* pCreateInfos, 51199ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall const VkAllocationCallbacks* pAllocator, 51209ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall VkSwapchainKHR* pSwapchains) { 51219ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall return ? 51229ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall} 51239ba8bc8d8769cd4d7b56b44222323b7f06783b11Jesse Hall 51243e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xlib_surface") 5125a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkCreateXlibSurfaceKHR( 51261356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 5127f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall const VkXlibSurfaceCreateInfoKHR* pCreateInfo, 51280e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 51291356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR* pSurface) { 51301356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 51311356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 51321356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 51331356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 51343e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xlib_surface") 5135a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR( 5136a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 5137a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 queueFamilyIndex, 5138a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall platform.Display* dpy, 513965ab552c18df3e94c5d275294a20dd4d20dda119Jesse Hall platform.VisualID visualID) { 5140a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 5141a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 5142a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 5143a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 51443e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_xcb_surface") 5145f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hallcmd VkResult vkCreateXcbSurfaceKHR( 51461356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 5147f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall const VkXcbSurfaceCreateInfoKHR* pCreateInfo, 51480e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 51491356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR* pSurface) { 51501356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 51511356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 51521356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 51531356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 5154523db34c1308c066ff9fe0a301ba6ed09f82b8aeJesse Hall@extension("VK_KHR_xcb_surface") 5155a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR( 5156a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 5157a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 queueFamilyIndex, 5158a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall platform.xcb_connection_t* connection, 5159a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall platform.xcb_visualid_t visual_id) { 5160a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 5161a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 5162a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 5163a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 51643e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_wayland_surface") 51651356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkCreateWaylandSurfaceKHR( 51661356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 5167f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, 51680e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 51691356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR* pSurface) { 51701356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 51711356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 51721356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 51731356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 51743e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_wayland_surface") 5175a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR( 5176a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 5177a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 queueFamilyIndex, 5178a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall platform.wl_display* display) { 5179a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 5180a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 5181a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 5182a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 51833e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_mir_surface") 51841356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkCreateMirSurfaceKHR( 51851356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 5186f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall const VkMirSurfaceCreateInfoKHR* pCreateInfo, 51870e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 51881356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR* pSurface) { 51891356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 51901356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 51911356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 51921356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 51933e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_mir_surface") 5194a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR( 5195a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 5196a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 queueFamilyIndex, 5197a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall platform.MirConnection* connection) { 5198a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 5199a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 5200a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 5201a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 52023e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_android_surface") 52031356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkCreateAndroidSurfaceKHR( 52041356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 5205f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, 52060e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 52071356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR* pSurface) { 52081356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 52091356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 52101356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 52111356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 52123e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_win32_surface") 52131356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallcmd VkResult vkCreateWin32SurfaceKHR( 52141356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance, 5215f9fa9a50d5e87dacce36ef2a56b392fc053cf8ceJesse Hall const VkWin32SurfaceCreateInfoKHR* pCreateInfo, 52160e74f00af03b7e705774d0dcf69c2ba8ce7a15a8Jesse Hall const VkAllocationCallbacks* pAllocator, 52171356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkSurfaceKHR* pSurface) { 52181356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall instanceObject := GetInstance(instance) 52191356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return ? 52201356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 52211356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 52223e0dc8f0d9f4de86ac61c4d3c33c3958f35e0a25Jesse Hall@extension("VK_KHR_win32_surface") 5223a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hallcmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR( 5224a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall VkPhysicalDevice physicalDevice, 5225a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall u32 queueFamilyIndex) { 5226e2948d83f352b9a093252a06757f76a88f5355d3Jesse Hall physicalDeviceObject := GetPhysicalDevice(physicalDevice) 5227a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall return ? 5228a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall} 5229a64292517b1876c4bbe5d3e62c577812f40bd922Jesse Hall 5230b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu@extension("VK_ANDROID_native_buffer") 5231b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wucmd VkResult vkGetSwapchainGrallocUsageANDROID( 5232b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu VkDevice device, 5233b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu VkFormat format, 5234b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu VkImageUsageFlags imageUsage, 5235b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu int* grallocUsage) { 5236b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu return ? 5237b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu} 5238b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu 5239b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu@extension("VK_ANDROID_native_buffer") 5240b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wucmd VkResult vkAcquireImageANDROID( 5241b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu VkDevice device, 5242b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu VkImage image, 5243b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu int nativeFenceFd, 5244b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu VkSemaphore semaphore, 5245b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu VkFence fence) { 5246b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu return ? 5247b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu} 5248b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu 5249b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu@extension("VK_ANDROID_native_buffer") 5250b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wucmd VkResult vkQueueSignalReleaseImageANDROID( 5251b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu VkQueue queue, 5252b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu u32 waitSemaphoreCount, 5253b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu const VkSemaphore* pWaitSemaphores, 5254b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu VkImage image, 5255b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu int* pNativeFenceFd) { 5256b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu return ? 5257b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu} 5258b262ddcfaba592ca153beddb120aeb68b64e6e63Chia-I Wu 5259715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@extension("VK_EXT_debug_report") 5260715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@external type void* PFN_vkDebugReportCallbackEXT 5261715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@extension("VK_EXT_debug_report") 5262715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@pfn cmd VkBool32 vkDebugReportCallbackEXT( 5263715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VkDebugReportFlagsEXT flags, 5264715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VkDebugReportObjectTypeEXT objectType, 5265715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall u64 object, 5266715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall platform.size_t location, 5267715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall s32 messageCode, 5268715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall const char* pLayerPrefix, 5269715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall const char* pMessage, 5270715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall void* pUserData) { 5271715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall return ? 5272715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall} 5273715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall 5274715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@extension("VK_EXT_debug_report") 5275715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hallcmd VkResult vkCreateDebugReportCallbackEXT( 5276715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VkInstance instance, 5277715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, 5278715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall const VkAllocationCallbacks* pAllocator, 5279715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VkDebugReportCallbackEXT* pCallback) { 5280715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall return ? 5281715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall} 5282715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall 5283715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@extension("VK_EXT_debug_report") 5284715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hallcmd void vkDestroyDebugReportCallbackEXT( 5285715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VkInstance instance, 5286715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VkDebugReportCallbackEXT callback, 5287715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall const VkAllocationCallbacks* pAllocator) { 5288715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall} 5289715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall 5290715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall@extension("VK_EXT_debug_report") 5291715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hallcmd void vkDebugReportMessageEXT( 5292715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VkInstance instance, 5293715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VkDebugReportFlagsEXT flags, 5294715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall VkDebugReportObjectTypeEXT objectType, 5295715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall u64 object, 5296715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall platform.size_t location, 5297715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall s32 messageCode, 5298715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall const char* pLayerPrefix, 5299715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall const char* pMessage) { 5300715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall} 5301715b86ac7d0853131b375ff786c87d8d87a762a1Jesse Hall 53022676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_EXT_debug_marker") 53032676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hallcmd VkResult vkDebugMarkerSetObjectTagEXT( 53042676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkDevice device, 53052676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkDebugMarkerObjectTagInfoEXT* pTagInfo) { 53062676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall return ? 53072676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall} 53082676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 53092676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_EXT_debug_marker") 53102676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hallcmd VkResult vkDebugMarkerSetObjectNameEXT( 53112676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkDevice device, 53122676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkDebugMarkerObjectNameInfoEXT* pNameInfo) { 53132676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall return ? 53142676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall} 53152676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 53162676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_EXT_debug_marker") 53172676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hallcmd void vkCmdDebugMarkerBeginEXT( 53182676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkCommandBuffer commandBuffer, 53192676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { 53202676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall} 53212676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 53222676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_EXT_debug_marker") 53232676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hallcmd void vkCmdDebugMarkerEndEXT( 53242676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkCommandBuffer commandBuffer) { 53252676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall} 53262676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 53272676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall@extension("VK_EXT_debug_marker") 53282676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hallcmd void vkCmdDebugMarkerInsertEXT( 53292676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkCommandBuffer commandBuffer, 53302676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { 53312676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall} 53322676338dd692b7d1e1c276d82e6b0492db53ab2eJesse Hall 5333d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5334d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall//////////////// 5335d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Validation // 5336d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall//////////////// 5337d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5338d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallextern void validate(string layerName, bool condition, string message) 5339d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5340d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5341d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////////////////////// 5342d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall// Internal State Tracking // 5343d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall///////////////////////////// 5344d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5345d27f6aad91e6cdb7a867c432f66a852acc077897Jesse HallStateObject State 5346d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5347d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class StateObject { 5348d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Dispatchable objects. 5349d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkInstance, ref!InstanceObject) Instances 5350d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices 5351d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkDevice, ref!DeviceObject) Devices 5352d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkQueue, ref!QueueObject) Queues 53533fbc856120217247c72fb5ed88500000f3881c45Jesse Hall map!(VkCommandBuffer, ref!CommandBufferObject) CommandBuffers 5354d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5355d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall // Non-dispatchable objects. 5356d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkDeviceMemory, ref!DeviceMemoryObject) DeviceMemories 5357d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkBuffer, ref!BufferObject) Buffers 5358d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkBufferView, ref!BufferViewObject) BufferViews 5359d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkImage, ref!ImageObject) Images 5360d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkImageView, ref!ImageViewObject) ImageViews 5361d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkShaderModule, ref!ShaderModuleObject) ShaderModules 5362d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkPipeline, ref!PipelineObject) Pipelines 5363d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkPipelineLayout, ref!PipelineLayoutObject) PipelineLayouts 5364d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkSampler, ref!SamplerObject) Samplers 5365d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkDescriptorSet, ref!DescriptorSetObject) DescriptorSets 5366d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkDescriptorSetLayout, ref!DescriptorSetLayoutObject) DescriptorSetLayouts 5367d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkDescriptorPool, ref!DescriptorPoolObject) DescriptorPools 5368d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkFence, ref!FenceObject) Fences 5369d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkSemaphore, ref!SemaphoreObject) Semaphores 5370d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkEvent, ref!EventObject) Events 5371d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkQueryPool, ref!QueryPoolObject) QueryPools 5372d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkFramebuffer, ref!FramebufferObject) Framebuffers 5373d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkRenderPass, ref!RenderPassObject) RenderPasses 5374d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(VkPipelineCache, ref!PipelineCacheObject) PipelineCaches 53753fbc856120217247c72fb5ed88500000f3881c45Jesse Hall map!(VkCommandPool, ref!CommandPoolObject) CommandPools 53761356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall map!(VkSurfaceKHR, ref!SurfaceObject) Surfaces 537788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine map!(VkSwapchainKHR, ref!SwapchainObject) Swapchains 5378d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5379d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5380d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class InstanceObject { 5381d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5382d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5383d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class PhysicalDeviceObject { 5384d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkInstance instance 5385d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5386d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5387d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class DeviceObject { 5388d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkPhysicalDevice physicalDevice 5389d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5390d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5391d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class QueueObject { 5392d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5393d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueueFlags flags 5394d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5395d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 53963fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@internal class CommandBufferObject { 5397d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5398d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall map!(u64, VkDeviceMemory) boundObjects 5399d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkQueueFlags queueFlags 5400d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5401d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5402d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class DeviceMemoryObject { 54033fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDevice device 54043fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize allocationSize 54053fbc856120217247c72fb5ed88500000f3881c45Jesse Hall map!(u64, VkDeviceSize) boundObjects 54063fbc856120217247c72fb5ed88500000f3881c45Jesse Hall map!(VkCommandBuffer, VkCommandBuffer) boundCommandBuffers 5407d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5408d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5409d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class BufferObject { 5410d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 54113fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory 54123fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize memoryOffset 5413d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5414d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5415d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class BufferViewObject { 5416d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5417d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkBuffer buffer 5418d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5419d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5420d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class ImageObject { 5421d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 54223fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceMemory memory 54233fbc856120217247c72fb5ed88500000f3881c45Jesse Hall VkDeviceSize memoryOffset 5424d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5425d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5426d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class ImageViewObject { 5427d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5428d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkImage image 5429d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5430d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5431d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class ShaderObject { 5432d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5433d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5434d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5435d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class ShaderModuleObject { 5436d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5437d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5438d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5439d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class PipelineObject { 5440d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5441d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5442d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5443d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class PipelineLayoutObject { 5444d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5445d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5446d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5447d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class SamplerObject { 5448d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5449d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5450d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5451d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class DescriptorSetObject { 5452d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5453d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5454d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5455d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class DescriptorSetLayoutObject { 5456d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5457d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5458d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5459d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class DescriptorPoolObject { 5460d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5461d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5462d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5463d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class FenceObject { 5464d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5465d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall bool signaled 5466d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5467d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5468d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class SemaphoreObject { 5469d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5470d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5471d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5472d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class EventObject { 5473d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5474d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5475d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5476d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class QueryPoolObject { 5477d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5478d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5479d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5480d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class FramebufferObject { 5481d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5482d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5483d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5484d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class RenderPassObject { 5485d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5486d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5487d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5488d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall@internal class PipelineCacheObject { 5489d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5490d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5491d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 54923fbc856120217247c72fb5ed88500000f3881c45Jesse Hall@internal class CommandPoolObject { 5493d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall VkDevice device 5494d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5495d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 54961356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall@internal class SurfaceObject { 54971356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall VkInstance instance 54981356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 54991356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 550088594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine@internal class SwapchainObject { 550188594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine VkDevice device 550288594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 550388594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 5504d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!InstanceObject GetInstance(VkInstance instance) { 5505d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(instance in State.Instances) 5506d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Instances[instance] 5507d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5508d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5509d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!PhysicalDeviceObject GetPhysicalDevice(VkPhysicalDevice physicalDevice) { 5510d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(physicalDevice in State.PhysicalDevices) 5511d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.PhysicalDevices[physicalDevice] 5512d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5513d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5514d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!DeviceObject GetDevice(VkDevice device) { 5515d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(device in State.Devices) 5516d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Devices[device] 5517d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5518d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5519d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!QueueObject GetQueue(VkQueue queue) { 5520d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(queue in State.Queues) 5521d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Queues[queue] 5522d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5523d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 55243fbc856120217247c72fb5ed88500000f3881c45Jesse Hallmacro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) { 55253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandBuffer in State.CommandBuffers) 55263fbc856120217247c72fb5ed88500000f3881c45Jesse Hall return State.CommandBuffers[commandBuffer] 5527d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5528d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 55293fbc856120217247c72fb5ed88500000f3881c45Jesse Hallmacro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) { 55303fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(memory in State.DeviceMemories) 55313fbc856120217247c72fb5ed88500000f3881c45Jesse Hall return State.DeviceMemories[memory] 5532d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5533d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5534d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!BufferObject GetBuffer(VkBuffer buffer) { 5535d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(buffer in State.Buffers) 5536d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Buffers[buffer] 5537d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5538d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5539d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!BufferViewObject GetBufferView(VkBufferView bufferView) { 5540d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(bufferView in State.BufferViews) 5541d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.BufferViews[bufferView] 5542d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5543d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5544d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!ImageObject GetImage(VkImage image) { 5545d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(image in State.Images) 5546d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Images[image] 5547d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5548d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5549d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!ImageViewObject GetImageView(VkImageView imageView) { 5550d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(imageView in State.ImageViews) 5551d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.ImageViews[imageView] 5552d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5553d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5554d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) { 5555d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(shaderModule in State.ShaderModules) 5556d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.ShaderModules[shaderModule] 5557d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5558d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5559d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!PipelineObject GetPipeline(VkPipeline pipeline) { 5560d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipeline in State.Pipelines) 5561d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Pipelines[pipeline] 5562d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5563d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5564d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!PipelineLayoutObject GetPipelineLayout(VkPipelineLayout pipelineLayout) { 5565d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineLayout in State.PipelineLayouts) 5566d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.PipelineLayouts[pipelineLayout] 5567d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5568d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5569d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!SamplerObject GetSampler(VkSampler sampler) { 5570d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(sampler in State.Samplers) 5571d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Samplers[sampler] 5572d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5573d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5574d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!DescriptorSetObject GetDescriptorSet(VkDescriptorSet descriptorSet) { 5575d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorSet in State.DescriptorSets) 5576d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.DescriptorSets[descriptorSet] 5577d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5578d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5579d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!DescriptorSetLayoutObject GetDescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout) { 5580d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorSetLayout in State.DescriptorSetLayouts) 5581d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.DescriptorSetLayouts[descriptorSetLayout] 5582d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5583d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5584d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool) { 5585d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(descriptorPool in State.DescriptorPools) 5586d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.DescriptorPools[descriptorPool] 5587d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5588d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5589d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!FenceObject GetFence(VkFence fence) { 5590d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(fence in State.Fences) 5591d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Fences[fence] 5592d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5593d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5594d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!SemaphoreObject GetSemaphore(VkSemaphore semaphore) { 5595d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(semaphore in State.Semaphores) 5596d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Semaphores[semaphore] 5597d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5598d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5599d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!EventObject GetEvent(VkEvent event) { 5600d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(event in State.Events) 5601d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Events[event] 5602d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5603d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5604d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!QueryPoolObject GetQueryPool(VkQueryPool queryPool) { 5605d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(queryPool in State.QueryPools) 5606d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.QueryPools[queryPool] 5607d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5608d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5609d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!FramebufferObject GetFramebuffer(VkFramebuffer framebuffer) { 5610d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(framebuffer in State.Framebuffers) 5611d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.Framebuffers[framebuffer] 5612d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5613d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5614d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!RenderPassObject GetRenderPass(VkRenderPass renderPass) { 5615d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(renderPass in State.RenderPasses) 5616d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.RenderPasses[renderPass] 5617d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5618d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 5619d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hallmacro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) { 5620d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall assert(pipelineCache in State.PipelineCaches) 5621d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall return State.PipelineCaches[pipelineCache] 5622d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall} 5623d27f6aad91e6cdb7a867c432f66a852acc077897Jesse Hall 56243fbc856120217247c72fb5ed88500000f3881c45Jesse Hallmacro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) { 56253fbc856120217247c72fb5ed88500000f3881c45Jesse Hall assert(commandPool in State.CommandPools) 56263fbc856120217247c72fb5ed88500000f3881c45Jesse Hall return State.CommandPools[commandPool] 5627f09c6b1fe893f0d378cfd3228b10df6a448e3a1cJesse Hall} 562888594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine 56291356b0d3179254a7a27e88abb2d2500385469f14Jesse Hallmacro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) { 56301356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall assert(surface in State.Surfaces) 56311356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall return State.Surfaces[surface] 56321356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall} 56331356b0d3179254a7a27e88abb2d2500385469f14Jesse Hall 563488594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentinemacro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) { 563588594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine assert(swapchain in State.Swapchains) 563688594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine return State.Swapchains[swapchain] 563788594d744093a8429030cf4f4a9ec22f25dfd500Michael Lentine} 5638d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hall 5639d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hallmacro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) { 5640d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hall return as!VkQueueFlags(as!u32(flags) | as!u32(bit)) 5641d8bade009decc9e5bcc21396993d7a2e572a38f9Jesse Hall} 5642