Backlog/lib/vma/test/vulkan_core.zig

15933 lines
598 KiB
Zig

//
// Copyright (c) 2015-2020 The Khronos Group Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//
// This header is generated from the Khronos Vulkan XML API Registry.
//
//
const std = @import("std");
const builtin = @import("builtin");
const assert = std.debug.assert;
pub const CString = [*:0]const u8;
pub fn FlagsMixin(comptime FlagType: type) type {
comptime assert(@sizeOf(FlagType) == 4);
return struct {
pub const IntType = Flags;
pub fn toInt(self: FlagType) Flags {
return @bitCast(Flags, self);
}
pub fn fromInt(value: Flags) FlagType {
return @bitCast(FlagType, value);
}
pub fn with(a: FlagType, b: FlagType) FlagType {
return fromInt(toInt(a) | toInt(b));
}
pub fn only(a: FlagType, b: FlagType) FlagType {
return fromInt(toInt(a) & toInt(b));
}
pub fn without(a: FlagType, b: FlagType) FlagType {
return fromInt(toInt(a) & ~toInt(b));
}
pub fn hasAllSet(a: FlagType, b: FlagType) bool {
return (toInt(a) & toInt(b)) == toInt(b);
}
pub fn hasAnySet(a: FlagType, b: FlagType) bool {
return (toInt(a) & toInt(b)) != 0;
}
pub fn isEmpty(a: FlagType) bool {
return toInt(a) == 0;
}
};
}
pub const CallConv = if (builtin.os.tag == .windows)
std.os.windows.WINAPI
else if (builtin.abi == .android and (builtin.cpu.arch.isARM() or builtin.cpu.arch.isThumb()) and builtin.Target.arm.featureSetHas(builtin.cpu.features, .has_v7) and builtin.cpu.arch.ptrBitWidth() == 32)
// On Android 32-bit ARM targets, Vulkan functions use the "hardfloat"
// calling convention, i.e. float parameters are passed in registers. This
// is true even if the rest of the application passes floats on the stack,
// as it does by default when compiling for the armeabi-v7a NDK ABI.
builtin.CallingConvention.AAPCSVFP
else
builtin.CallingConvention.C;
pub const VERSION_1_0 = 1;
pub fn MAKE_VERSION(major: u32, minor: u32, patch: u32) u32 { return @shlExact(major, 22) | @shlExact(minor, 12) | patch; }
// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
//pub const API_VERSION = MAKE_VERSION(1, 0, 0); // Patch version should always be set to 0
// Vulkan 1.0 version number
pub const API_VERSION_1_0 = MAKE_VERSION(1, 0, 0);// Patch version should always be set to 0
pub fn VERSION_MAJOR(version: u32) u32 { return version >> 22; }
pub fn VERSION_MINOR(version: u32) u32 { return (version >> 12) & 0x3ff; }
pub fn VERSION_PATCH(version: u32) u32 { return version & 0xfff; }
// Version of this file
pub const HEADER_VERSION = 132;
pub const Flags = u32;
pub const Bool32 = u32;
pub const DeviceSize = u64;
pub const SampleMask = u32;
pub const Instance = enum(usize) { Null = 0, _ };
pub const PhysicalDevice = enum(usize) { Null = 0, _ };
pub const Device = enum(usize) { Null = 0, _ };
pub const Queue = enum(usize) { Null = 0, _ };
pub const Semaphore = enum(u64) { Null = 0, _ };
pub const CommandBuffer = enum(usize) { Null = 0, _ };
pub const Fence = enum(u64) { Null = 0, _ };
pub const DeviceMemory = enum(u64) { Null = 0, _ };
pub const Buffer = enum(u64) { Null = 0, _ };
pub const Image = enum(u64) { Null = 0, _ };
pub const Event = enum(u64) { Null = 0, _ };
pub const QueryPool = enum(u64) { Null = 0, _ };
pub const BufferView = enum(u64) { Null = 0, _ };
pub const ImageView = enum(u64) { Null = 0, _ };
pub const ShaderModule = enum(u64) { Null = 0, _ };
pub const PipelineCache = enum(u64) { Null = 0, _ };
pub const PipelineLayout = enum(u64) { Null = 0, _ };
pub const RenderPass = enum(u64) { Null = 0, _ };
pub const Pipeline = enum(u64) { Null = 0, _ };
pub const DescriptorSetLayout = enum(u64) { Null = 0, _ };
pub const Sampler = enum(u64) { Null = 0, _ };
pub const DescriptorPool = enum(u64) { Null = 0, _ };
pub const DescriptorSet = enum(u64) { Null = 0, _ };
pub const Framebuffer = enum(u64) { Null = 0, _ };
pub const CommandPool = enum(u64) { Null = 0, _ };
pub const LOD_CLAMP_NONE = @as(f32, 1000.0);
pub const REMAINING_MIP_LEVELS = (~@as(u32, 0));
pub const REMAINING_ARRAY_LAYERS = (~@as(u32, 0));
pub const WHOLE_SIZE = (~@as(u64, 0));
pub const ATTACHMENT_UNUSED = (~@as(u32, 0));
pub const TRUE = 1;
pub const FALSE = 0;
pub const QUEUE_FAMILY_IGNORED = (~@as(u32, 0));
pub const SUBPASS_EXTERNAL = (~@as(u32, 0));
pub const MAX_PHYSICAL_DEVICE_NAME_SIZE = 256;
pub const UUID_SIZE = 16;
pub const MAX_MEMORY_TYPES = 32;
pub const MAX_MEMORY_HEAPS = 16;
pub const MAX_EXTENSION_NAME_SIZE = 256;
pub const MAX_DESCRIPTION_SIZE = 256;
pub const PipelineCacheHeaderVersion = enum(i32) {
ONE = 1,
_,
};
pub const Result = enum(i32) {
SUCCESS = 0,
NOT_READY = 1,
TIMEOUT = 2,
EVENT_SET = 3,
EVENT_RESET = 4,
INCOMPLETE = 5,
ERROR_OUT_OF_HOST_MEMORY = -1,
ERROR_OUT_OF_DEVICE_MEMORY = -2,
ERROR_INITIALIZATION_FAILED = -3,
ERROR_DEVICE_LOST = -4,
ERROR_MEMORY_MAP_FAILED = -5,
ERROR_LAYER_NOT_PRESENT = -6,
ERROR_EXTENSION_NOT_PRESENT = -7,
ERROR_FEATURE_NOT_PRESENT = -8,
ERROR_INCOMPATIBLE_DRIVER = -9,
ERROR_TOO_MANY_OBJECTS = -10,
ERROR_FORMAT_NOT_SUPPORTED = -11,
ERROR_FRAGMENTED_POOL = -12,
ERROR_UNKNOWN = -13,
ERROR_OUT_OF_POOL_MEMORY = -1000069000,
ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
ERROR_FRAGMENTATION = -1000161000,
ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,
ERROR_SURFACE_LOST_KHR = -1000000000,
ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
SUBOPTIMAL_KHR = 1000001003,
ERROR_OUT_OF_DATE_KHR = -1000001004,
ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
ERROR_VALIDATION_FAILED_EXT = -1000011001,
ERROR_INVALID_SHADER_NV = -1000012000,
ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
ERROR_NOT_PERMITTED_EXT = -1000174001,
ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000,
_,
const Self = @This();
pub const ERROR_OUT_OF_POOL_MEMORY_KHR = Self.ERROR_OUT_OF_POOL_MEMORY;
pub const ERROR_INVALID_EXTERNAL_HANDLE_KHR = Self.ERROR_INVALID_EXTERNAL_HANDLE;
pub const ERROR_FRAGMENTATION_EXT = Self.ERROR_FRAGMENTATION;
pub const ERROR_INVALID_DEVICE_ADDRESS_EXT = Self.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS;
pub const ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = Self.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS;
};
pub const StructureType = enum(i32) {
APPLICATION_INFO = 0,
INSTANCE_CREATE_INFO = 1,
DEVICE_QUEUE_CREATE_INFO = 2,
DEVICE_CREATE_INFO = 3,
SUBMIT_INFO = 4,
MEMORY_ALLOCATE_INFO = 5,
MAPPED_MEMORY_RANGE = 6,
BIND_SPARSE_INFO = 7,
FENCE_CREATE_INFO = 8,
SEMAPHORE_CREATE_INFO = 9,
EVENT_CREATE_INFO = 10,
QUERY_POOL_CREATE_INFO = 11,
BUFFER_CREATE_INFO = 12,
BUFFER_VIEW_CREATE_INFO = 13,
IMAGE_CREATE_INFO = 14,
IMAGE_VIEW_CREATE_INFO = 15,
SHADER_MODULE_CREATE_INFO = 16,
PIPELINE_CACHE_CREATE_INFO = 17,
PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
GRAPHICS_PIPELINE_CREATE_INFO = 28,
COMPUTE_PIPELINE_CREATE_INFO = 29,
PIPELINE_LAYOUT_CREATE_INFO = 30,
SAMPLER_CREATE_INFO = 31,
DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
DESCRIPTOR_POOL_CREATE_INFO = 33,
DESCRIPTOR_SET_ALLOCATE_INFO = 34,
WRITE_DESCRIPTOR_SET = 35,
COPY_DESCRIPTOR_SET = 36,
FRAMEBUFFER_CREATE_INFO = 37,
RENDER_PASS_CREATE_INFO = 38,
COMMAND_POOL_CREATE_INFO = 39,
COMMAND_BUFFER_ALLOCATE_INFO = 40,
COMMAND_BUFFER_INHERITANCE_INFO = 41,
COMMAND_BUFFER_BEGIN_INFO = 42,
RENDER_PASS_BEGIN_INFO = 43,
BUFFER_MEMORY_BARRIER = 44,
IMAGE_MEMORY_BARRIER = 45,
MEMORY_BARRIER = 46,
LOADER_INSTANCE_CREATE_INFO = 47,
LOADER_DEVICE_CREATE_INFO = 48,
PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,
BIND_BUFFER_MEMORY_INFO = 1000157000,
BIND_IMAGE_MEMORY_INFO = 1000157001,
PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,
MEMORY_DEDICATED_REQUIREMENTS = 1000127000,
MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,
MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,
DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,
DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,
DEVICE_GROUP_SUBMIT_INFO = 1000060005,
DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,
BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,
BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,
PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,
DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,
BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,
IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,
IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,
MEMORY_REQUIREMENTS_2 = 1000146003,
SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,
PHYSICAL_DEVICE_FEATURES_2 = 1000059000,
PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,
FORMAT_PROPERTIES_2 = 1000059002,
IMAGE_FORMAT_PROPERTIES_2 = 1000059003,
PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,
QUEUE_FAMILY_PROPERTIES_2 = 1000059005,
PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,
SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,
PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,
PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,
RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,
IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,
PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,
RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,
PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,
PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,
PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000,
PROTECTED_SUBMIT_INFO = 1000145000,
PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,
PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,
DEVICE_QUEUE_INFO_2 = 1000145003,
SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,
SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,
BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,
IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,
PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,
SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,
DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000,
PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,
EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,
PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,
EXTERNAL_BUFFER_PROPERTIES = 1000071003,
PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,
EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,
EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,
EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,
PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,
EXTERNAL_FENCE_PROPERTIES = 1000112001,
EXPORT_FENCE_CREATE_INFO = 1000113000,
EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,
PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,
EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,
PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000,
PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49,
PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50,
PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51,
PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52,
IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000,
ATTACHMENT_DESCRIPTION_2 = 1000109000,
ATTACHMENT_REFERENCE_2 = 1000109001,
SUBPASS_DESCRIPTION_2 = 1000109002,
SUBPASS_DEPENDENCY_2 = 1000109003,
RENDER_PASS_CREATE_INFO_2 = 1000109004,
SUBPASS_BEGIN_INFO = 1000109005,
SUBPASS_END_INFO = 1000109006,
PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000,
PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000,
PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000,
PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000,
PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000,
DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000,
PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001,
PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002,
DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003,
DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004,
PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000,
SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001,
PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000,
IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000,
PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000,
SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001,
PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000,
PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000,
FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001,
FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002,
RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003,
PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000,
PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000,
PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000,
ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001,
ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002,
PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000,
PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000,
PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001,
SEMAPHORE_TYPE_CREATE_INFO = 1000207002,
TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003,
SEMAPHORE_WAIT_INFO = 1000207004,
SEMAPHORE_SIGNAL_INFO = 1000207005,
PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000,
BUFFER_DEVICE_ADDRESS_INFO = 1000244001,
BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002,
MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003,
DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004,
SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
PRESENT_INFO_KHR = 1000001001,
DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008,
BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009,
ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010,
DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011,
DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012,
DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
DISPLAY_PRESENT_INFO_KHR = 1000003000,
XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000,
PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001,
PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002,
IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000,
TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000,
PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000,
EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
VALIDATION_FLAGS_EXT = 1000061000,
VI_SURFACE_CREATE_INFO_NN = 1000062000,
PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000,
IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000,
PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001,
IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000,
EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001,
MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002,
MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003,
IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
MEMORY_FD_PROPERTIES_KHR = 1000074001,
MEMORY_GET_FD_INFO_KHR = 1000074002,
WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000,
IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000,
EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001,
D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002,
SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003,
IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
PRESENT_REGIONS_KHR = 1000084000,
OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
SURFACE_CAPABILITIES_2_EXT = 1000090000,
DISPLAY_POWER_INFO_EXT = 1000091000,
DEVICE_EVENT_INFO_EXT = 1000091001,
DISPLAY_EVENT_INFO_EXT = 1000091002,
SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
PRESENT_TIMES_INFO_GOOGLE = 1000092000,
PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,
PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,
PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,
PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,
HDR_METADATA_EXT = 1000105000,
SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002,
IMPORT_FENCE_FD_INFO_KHR = 1000115000,
FENCE_GET_FD_INFO_KHR = 1000115001,
PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000,
PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001,
QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002,
PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003,
ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004,
PERFORMANCE_COUNTER_KHR = 1000116005,
PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006,
PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
SURFACE_CAPABILITIES_2_KHR = 1000119001,
SURFACE_FORMAT_2_KHR = 1000119002,
DISPLAY_PROPERTIES_2_KHR = 1000121000,
DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001,
DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002,
DISPLAY_PLANE_INFO_2_KHR = 1000121003,
DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004,
IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000,
DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001,
DEBUG_UTILS_LABEL_EXT = 1000128002,
DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003,
DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004,
ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000,
ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001,
ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002,
IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
EXTERNAL_FORMAT_ANDROID = 1000129005,
PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000,
PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001,
WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002,
DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003,
SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
MULTISAMPLE_PROPERTIES_EXT = 1000143004,
PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000,
PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001,
DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000,
DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001,
PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002,
IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003,
IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004,
IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000,
PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001,
PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002,
PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005,
RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000,
ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001,
GEOMETRY_NV = 1000165003,
GEOMETRY_TRIANGLES_NV = 1000165004,
GEOMETRY_AABB_NV = 1000165005,
BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006,
WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007,
ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008,
PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009,
RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011,
ACCELERATION_STRUCTURE_INFO_NV = 1000165012,
PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000,
PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001,
PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,
FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,
DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000,
PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000,
CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000,
DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000,
PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,
PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001,
PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
PRESENT_FRAME_TOKEN_GGP = 1000191000,
PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000,
PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000,
PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,
PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,
PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000,
PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000,
PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000,
PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002,
CHECKPOINT_DATA_NV = 1000206000,
QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000,
QUERY_POOL_CREATE_INFO_INTEL = 1000210000,
INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001,
PERFORMANCE_MARKER_INFO_INTEL = 1000210002,
PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003,
PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004,
PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005,
PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000,
SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001,
IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000,
METAL_SURFACE_CREATE_INFO_EXT = 1000217000,
PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000,
PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001,
RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002,
PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000,
PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001,
PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002,
PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000,
PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000,
PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000,
PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000,
MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000,
PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000,
VALIDATION_FEATURES_EXT = 1000247000,
PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,
COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001,
PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002,
PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000,
PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001,
FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002,
PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000,
PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000,
SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000,
SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002,
SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001,
HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000,
PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000,
PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001,
PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002,
PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000,
PIPELINE_INFO_KHR = 1000269001,
PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002,
PIPELINE_EXECUTABLE_INFO_KHR = 1000269003,
PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004,
PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005,
PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000,
PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000,
PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001,
_,
const Self = @This();
pub const PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = Self.PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
pub const PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = Self.PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
pub const DEBUG_REPORT_CREATE_INFO_EXT = Self.DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;
pub const RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = Self.RENDER_PASS_MULTIVIEW_CREATE_INFO;
pub const PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = Self.PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
pub const PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = Self.PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
pub const PHYSICAL_DEVICE_FEATURES_2_KHR = Self.PHYSICAL_DEVICE_FEATURES_2;
pub const PHYSICAL_DEVICE_PROPERTIES_2_KHR = Self.PHYSICAL_DEVICE_PROPERTIES_2;
pub const FORMAT_PROPERTIES_2_KHR = Self.FORMAT_PROPERTIES_2;
pub const IMAGE_FORMAT_PROPERTIES_2_KHR = Self.IMAGE_FORMAT_PROPERTIES_2;
pub const PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = Self.PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
pub const QUEUE_FAMILY_PROPERTIES_2_KHR = Self.QUEUE_FAMILY_PROPERTIES_2;
pub const PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = Self.PHYSICAL_DEVICE_MEMORY_PROPERTIES_2;
pub const SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = Self.SPARSE_IMAGE_FORMAT_PROPERTIES_2;
pub const PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = Self.PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2;
pub const MEMORY_ALLOCATE_FLAGS_INFO_KHR = Self.MEMORY_ALLOCATE_FLAGS_INFO;
pub const DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = Self.DEVICE_GROUP_RENDER_PASS_BEGIN_INFO;
pub const DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = Self.DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO;
pub const DEVICE_GROUP_SUBMIT_INFO_KHR = Self.DEVICE_GROUP_SUBMIT_INFO;
pub const DEVICE_GROUP_BIND_SPARSE_INFO_KHR = Self.DEVICE_GROUP_BIND_SPARSE_INFO;
pub const BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = Self.BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO;
pub const BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = Self.BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO;
pub const PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = Self.PHYSICAL_DEVICE_GROUP_PROPERTIES;
pub const DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = Self.DEVICE_GROUP_DEVICE_CREATE_INFO;
pub const PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = Self.PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO;
pub const EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = Self.EXTERNAL_IMAGE_FORMAT_PROPERTIES;
pub const PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = Self.PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO;
pub const EXTERNAL_BUFFER_PROPERTIES_KHR = Self.EXTERNAL_BUFFER_PROPERTIES;
pub const PHYSICAL_DEVICE_ID_PROPERTIES_KHR = Self.PHYSICAL_DEVICE_ID_PROPERTIES;
pub const EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = Self.EXTERNAL_MEMORY_BUFFER_CREATE_INFO;
pub const EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = Self.EXTERNAL_MEMORY_IMAGE_CREATE_INFO;
pub const EXPORT_MEMORY_ALLOCATE_INFO_KHR = Self.EXPORT_MEMORY_ALLOCATE_INFO;
pub const PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = Self.PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO;
pub const EXTERNAL_SEMAPHORE_PROPERTIES_KHR = Self.EXTERNAL_SEMAPHORE_PROPERTIES;
pub const EXPORT_SEMAPHORE_CREATE_INFO_KHR = Self.EXPORT_SEMAPHORE_CREATE_INFO;
pub const PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = Self.PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
pub const PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = Self.PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
pub const PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = Self.PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
pub const DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = Self.DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;
pub const SURFACE_CAPABILITIES2_EXT = Self.SURFACE_CAPABILITIES_2_EXT;
pub const PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = Self.PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES;
pub const FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = Self.FRAMEBUFFER_ATTACHMENTS_CREATE_INFO;
pub const FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = Self.FRAMEBUFFER_ATTACHMENT_IMAGE_INFO;
pub const RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = Self.RENDER_PASS_ATTACHMENT_BEGIN_INFO;
pub const ATTACHMENT_DESCRIPTION_2_KHR = Self.ATTACHMENT_DESCRIPTION_2;
pub const ATTACHMENT_REFERENCE_2_KHR = Self.ATTACHMENT_REFERENCE_2;
pub const SUBPASS_DESCRIPTION_2_KHR = Self.SUBPASS_DESCRIPTION_2;
pub const SUBPASS_DEPENDENCY_2_KHR = Self.SUBPASS_DEPENDENCY_2;
pub const RENDER_PASS_CREATE_INFO_2_KHR = Self.RENDER_PASS_CREATE_INFO_2;
pub const SUBPASS_BEGIN_INFO_KHR = Self.SUBPASS_BEGIN_INFO;
pub const SUBPASS_END_INFO_KHR = Self.SUBPASS_END_INFO;
pub const PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = Self.PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO;
pub const EXTERNAL_FENCE_PROPERTIES_KHR = Self.EXTERNAL_FENCE_PROPERTIES;
pub const EXPORT_FENCE_CREATE_INFO_KHR = Self.EXPORT_FENCE_CREATE_INFO;
pub const PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = Self.PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
pub const RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = Self.RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO;
pub const IMAGE_VIEW_USAGE_CREATE_INFO_KHR = Self.IMAGE_VIEW_USAGE_CREATE_INFO;
pub const PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = Self.PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO;
pub const PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = Self.PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES;
pub const PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = Self.PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES;
pub const MEMORY_DEDICATED_REQUIREMENTS_KHR = Self.MEMORY_DEDICATED_REQUIREMENTS;
pub const MEMORY_DEDICATED_ALLOCATE_INFO_KHR = Self.MEMORY_DEDICATED_ALLOCATE_INFO;
pub const PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = Self.PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES;
pub const SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = Self.SAMPLER_REDUCTION_MODE_CREATE_INFO;
pub const BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = Self.BUFFER_MEMORY_REQUIREMENTS_INFO_2;
pub const IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = Self.IMAGE_MEMORY_REQUIREMENTS_INFO_2;
pub const IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = Self.IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2;
pub const MEMORY_REQUIREMENTS_2_KHR = Self.MEMORY_REQUIREMENTS_2;
pub const SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = Self.SPARSE_IMAGE_MEMORY_REQUIREMENTS_2;
pub const IMAGE_FORMAT_LIST_CREATE_INFO_KHR = Self.IMAGE_FORMAT_LIST_CREATE_INFO;
pub const SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = Self.SAMPLER_YCBCR_CONVERSION_CREATE_INFO;
pub const SAMPLER_YCBCR_CONVERSION_INFO_KHR = Self.SAMPLER_YCBCR_CONVERSION_INFO;
pub const BIND_IMAGE_PLANE_MEMORY_INFO_KHR = Self.BIND_IMAGE_PLANE_MEMORY_INFO;
pub const IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = Self.IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO;
pub const PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = Self.PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
pub const SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = Self.SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES;
pub const BIND_BUFFER_MEMORY_INFO_KHR = Self.BIND_BUFFER_MEMORY_INFO;
pub const BIND_IMAGE_MEMORY_INFO_KHR = Self.BIND_IMAGE_MEMORY_INFO;
pub const DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = Self.DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;
pub const PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = Self.PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
pub const PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = Self.PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
pub const DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = Self.DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO;
pub const DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = Self.DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT;
pub const PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = Self.PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
pub const DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = Self.DESCRIPTOR_SET_LAYOUT_SUPPORT;
pub const PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = Self.PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;
pub const PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = Self.PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;
pub const PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = Self.PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
pub const PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = Self.PHYSICAL_DEVICE_DRIVER_PROPERTIES;
pub const PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = Self.PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES;
pub const PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = Self.PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
pub const SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = Self.SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE;
pub const PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = Self.PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
pub const PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = Self.PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES;
pub const SEMAPHORE_TYPE_CREATE_INFO_KHR = Self.SEMAPHORE_TYPE_CREATE_INFO;
pub const TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = Self.TIMELINE_SEMAPHORE_SUBMIT_INFO;
pub const SEMAPHORE_WAIT_INFO_KHR = Self.SEMAPHORE_WAIT_INFO;
pub const SEMAPHORE_SIGNAL_INFO_KHR = Self.SEMAPHORE_SIGNAL_INFO;
pub const PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = Self.PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES;
pub const PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = Self.PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;
pub const PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = Self.PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES;
pub const ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = Self.ATTACHMENT_REFERENCE_STENCIL_LAYOUT;
pub const ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = Self.ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT;
pub const PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = Self.PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
pub const BUFFER_DEVICE_ADDRESS_INFO_EXT = Self.BUFFER_DEVICE_ADDRESS_INFO;
pub const IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = Self.IMAGE_STENCIL_USAGE_CREATE_INFO;
pub const PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = Self.PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES;
pub const PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = Self.PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
pub const BUFFER_DEVICE_ADDRESS_INFO_KHR = Self.BUFFER_DEVICE_ADDRESS_INFO;
pub const BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = Self.BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO;
pub const MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = Self.MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO;
pub const DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = Self.DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO;
pub const PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = Self.PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES;
};
pub const SystemAllocationScope = enum(i32) {
COMMAND = 0,
OBJECT = 1,
CACHE = 2,
DEVICE = 3,
INSTANCE = 4,
_,
};
pub const InternalAllocationType = enum(i32) {
EXECUTABLE = 0,
_,
};
pub const Format = enum(i32) {
UNDEFINED = 0,
R4G4_UNORM_PACK8 = 1,
R4G4B4A4_UNORM_PACK16 = 2,
B4G4R4A4_UNORM_PACK16 = 3,
R5G6B5_UNORM_PACK16 = 4,
B5G6R5_UNORM_PACK16 = 5,
R5G5B5A1_UNORM_PACK16 = 6,
B5G5R5A1_UNORM_PACK16 = 7,
A1R5G5B5_UNORM_PACK16 = 8,
R8_UNORM = 9,
R8_SNORM = 10,
R8_USCALED = 11,
R8_SSCALED = 12,
R8_UINT = 13,
R8_SINT = 14,
R8_SRGB = 15,
R8G8_UNORM = 16,
R8G8_SNORM = 17,
R8G8_USCALED = 18,
R8G8_SSCALED = 19,
R8G8_UINT = 20,
R8G8_SINT = 21,
R8G8_SRGB = 22,
R8G8B8_UNORM = 23,
R8G8B8_SNORM = 24,
R8G8B8_USCALED = 25,
R8G8B8_SSCALED = 26,
R8G8B8_UINT = 27,
R8G8B8_SINT = 28,
R8G8B8_SRGB = 29,
B8G8R8_UNORM = 30,
B8G8R8_SNORM = 31,
B8G8R8_USCALED = 32,
B8G8R8_SSCALED = 33,
B8G8R8_UINT = 34,
B8G8R8_SINT = 35,
B8G8R8_SRGB = 36,
R8G8B8A8_UNORM = 37,
R8G8B8A8_SNORM = 38,
R8G8B8A8_USCALED = 39,
R8G8B8A8_SSCALED = 40,
R8G8B8A8_UINT = 41,
R8G8B8A8_SINT = 42,
R8G8B8A8_SRGB = 43,
B8G8R8A8_UNORM = 44,
B8G8R8A8_SNORM = 45,
B8G8R8A8_USCALED = 46,
B8G8R8A8_SSCALED = 47,
B8G8R8A8_UINT = 48,
B8G8R8A8_SINT = 49,
B8G8R8A8_SRGB = 50,
A8B8G8R8_UNORM_PACK32 = 51,
A8B8G8R8_SNORM_PACK32 = 52,
A8B8G8R8_USCALED_PACK32 = 53,
A8B8G8R8_SSCALED_PACK32 = 54,
A8B8G8R8_UINT_PACK32 = 55,
A8B8G8R8_SINT_PACK32 = 56,
A8B8G8R8_SRGB_PACK32 = 57,
A2R10G10B10_UNORM_PACK32 = 58,
A2R10G10B10_SNORM_PACK32 = 59,
A2R10G10B10_USCALED_PACK32 = 60,
A2R10G10B10_SSCALED_PACK32 = 61,
A2R10G10B10_UINT_PACK32 = 62,
A2R10G10B10_SINT_PACK32 = 63,
A2B10G10R10_UNORM_PACK32 = 64,
A2B10G10R10_SNORM_PACK32 = 65,
A2B10G10R10_USCALED_PACK32 = 66,
A2B10G10R10_SSCALED_PACK32 = 67,
A2B10G10R10_UINT_PACK32 = 68,
A2B10G10R10_SINT_PACK32 = 69,
R16_UNORM = 70,
R16_SNORM = 71,
R16_USCALED = 72,
R16_SSCALED = 73,
R16_UINT = 74,
R16_SINT = 75,
R16_SFLOAT = 76,
R16G16_UNORM = 77,
R16G16_SNORM = 78,
R16G16_USCALED = 79,
R16G16_SSCALED = 80,
R16G16_UINT = 81,
R16G16_SINT = 82,
R16G16_SFLOAT = 83,
R16G16B16_UNORM = 84,
R16G16B16_SNORM = 85,
R16G16B16_USCALED = 86,
R16G16B16_SSCALED = 87,
R16G16B16_UINT = 88,
R16G16B16_SINT = 89,
R16G16B16_SFLOAT = 90,
R16G16B16A16_UNORM = 91,
R16G16B16A16_SNORM = 92,
R16G16B16A16_USCALED = 93,
R16G16B16A16_SSCALED = 94,
R16G16B16A16_UINT = 95,
R16G16B16A16_SINT = 96,
R16G16B16A16_SFLOAT = 97,
R32_UINT = 98,
R32_SINT = 99,
R32_SFLOAT = 100,
R32G32_UINT = 101,
R32G32_SINT = 102,
R32G32_SFLOAT = 103,
R32G32B32_UINT = 104,
R32G32B32_SINT = 105,
R32G32B32_SFLOAT = 106,
R32G32B32A32_UINT = 107,
R32G32B32A32_SINT = 108,
R32G32B32A32_SFLOAT = 109,
R64_UINT = 110,
R64_SINT = 111,
R64_SFLOAT = 112,
R64G64_UINT = 113,
R64G64_SINT = 114,
R64G64_SFLOAT = 115,
R64G64B64_UINT = 116,
R64G64B64_SINT = 117,
R64G64B64_SFLOAT = 118,
R64G64B64A64_UINT = 119,
R64G64B64A64_SINT = 120,
R64G64B64A64_SFLOAT = 121,
B10G11R11_UFLOAT_PACK32 = 122,
E5B9G9R9_UFLOAT_PACK32 = 123,
D16_UNORM = 124,
X8_D24_UNORM_PACK32 = 125,
D32_SFLOAT = 126,
S8_UINT = 127,
D16_UNORM_S8_UINT = 128,
D24_UNORM_S8_UINT = 129,
D32_SFLOAT_S8_UINT = 130,
BC1_RGB_UNORM_BLOCK = 131,
BC1_RGB_SRGB_BLOCK = 132,
BC1_RGBA_UNORM_BLOCK = 133,
BC1_RGBA_SRGB_BLOCK = 134,
BC2_UNORM_BLOCK = 135,
BC2_SRGB_BLOCK = 136,
BC3_UNORM_BLOCK = 137,
BC3_SRGB_BLOCK = 138,
BC4_UNORM_BLOCK = 139,
BC4_SNORM_BLOCK = 140,
BC5_UNORM_BLOCK = 141,
BC5_SNORM_BLOCK = 142,
BC6H_UFLOAT_BLOCK = 143,
BC6H_SFLOAT_BLOCK = 144,
BC7_UNORM_BLOCK = 145,
BC7_SRGB_BLOCK = 146,
ETC2_R8G8B8_UNORM_BLOCK = 147,
ETC2_R8G8B8_SRGB_BLOCK = 148,
ETC2_R8G8B8A1_UNORM_BLOCK = 149,
ETC2_R8G8B8A1_SRGB_BLOCK = 150,
ETC2_R8G8B8A8_UNORM_BLOCK = 151,
ETC2_R8G8B8A8_SRGB_BLOCK = 152,
EAC_R11_UNORM_BLOCK = 153,
EAC_R11_SNORM_BLOCK = 154,
EAC_R11G11_UNORM_BLOCK = 155,
EAC_R11G11_SNORM_BLOCK = 156,
ASTC_4x4_UNORM_BLOCK = 157,
ASTC_4x4_SRGB_BLOCK = 158,
ASTC_5x4_UNORM_BLOCK = 159,
ASTC_5x4_SRGB_BLOCK = 160,
ASTC_5x5_UNORM_BLOCK = 161,
ASTC_5x5_SRGB_BLOCK = 162,
ASTC_6x5_UNORM_BLOCK = 163,
ASTC_6x5_SRGB_BLOCK = 164,
ASTC_6x6_UNORM_BLOCK = 165,
ASTC_6x6_SRGB_BLOCK = 166,
ASTC_8x5_UNORM_BLOCK = 167,
ASTC_8x5_SRGB_BLOCK = 168,
ASTC_8x6_UNORM_BLOCK = 169,
ASTC_8x6_SRGB_BLOCK = 170,
ASTC_8x8_UNORM_BLOCK = 171,
ASTC_8x8_SRGB_BLOCK = 172,
ASTC_10x5_UNORM_BLOCK = 173,
ASTC_10x5_SRGB_BLOCK = 174,
ASTC_10x6_UNORM_BLOCK = 175,
ASTC_10x6_SRGB_BLOCK = 176,
ASTC_10x8_UNORM_BLOCK = 177,
ASTC_10x8_SRGB_BLOCK = 178,
ASTC_10x10_UNORM_BLOCK = 179,
ASTC_10x10_SRGB_BLOCK = 180,
ASTC_12x10_UNORM_BLOCK = 181,
ASTC_12x10_SRGB_BLOCK = 182,
ASTC_12x12_UNORM_BLOCK = 183,
ASTC_12x12_SRGB_BLOCK = 184,
G8B8G8R8_422_UNORM = 1000156000,
B8G8R8G8_422_UNORM = 1000156001,
G8_B8_R8_3PLANE_420_UNORM = 1000156002,
G8_B8R8_2PLANE_420_UNORM = 1000156003,
G8_B8_R8_3PLANE_422_UNORM = 1000156004,
G8_B8R8_2PLANE_422_UNORM = 1000156005,
G8_B8_R8_3PLANE_444_UNORM = 1000156006,
R10X6_UNORM_PACK16 = 1000156007,
R10X6G10X6_UNORM_2PACK16 = 1000156008,
R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
R12X4_UNORM_PACK16 = 1000156017,
R12X4G12X4_UNORM_2PACK16 = 1000156018,
R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
G16B16G16R16_422_UNORM = 1000156027,
B16G16R16G16_422_UNORM = 1000156028,
G16_B16_R16_3PLANE_420_UNORM = 1000156029,
G16_B16R16_2PLANE_420_UNORM = 1000156030,
G16_B16_R16_3PLANE_422_UNORM = 1000156031,
G16_B16R16_2PLANE_422_UNORM = 1000156032,
G16_B16_R16_3PLANE_444_UNORM = 1000156033,
PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000,
ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001,
ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002,
ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003,
ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004,
ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005,
ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006,
ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007,
ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008,
ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009,
ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010,
ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011,
ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012,
ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013,
_,
const Self = @This();
pub const G8B8G8R8_422_UNORM_KHR = Self.G8B8G8R8_422_UNORM;
pub const B8G8R8G8_422_UNORM_KHR = Self.B8G8R8G8_422_UNORM;
pub const G8_B8_R8_3PLANE_420_UNORM_KHR = Self.G8_B8_R8_3PLANE_420_UNORM;
pub const G8_B8R8_2PLANE_420_UNORM_KHR = Self.G8_B8R8_2PLANE_420_UNORM;
pub const G8_B8_R8_3PLANE_422_UNORM_KHR = Self.G8_B8_R8_3PLANE_422_UNORM;
pub const G8_B8R8_2PLANE_422_UNORM_KHR = Self.G8_B8R8_2PLANE_422_UNORM;
pub const G8_B8_R8_3PLANE_444_UNORM_KHR = Self.G8_B8_R8_3PLANE_444_UNORM;
pub const R10X6_UNORM_PACK16_KHR = Self.R10X6_UNORM_PACK16;
pub const R10X6G10X6_UNORM_2PACK16_KHR = Self.R10X6G10X6_UNORM_2PACK16;
pub const R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = Self.R10X6G10X6B10X6A10X6_UNORM_4PACK16;
pub const G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = Self.G10X6B10X6G10X6R10X6_422_UNORM_4PACK16;
pub const B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = Self.B10X6G10X6R10X6G10X6_422_UNORM_4PACK16;
pub const G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = Self.G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16;
pub const G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = Self.G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16;
pub const G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = Self.G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16;
pub const G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = Self.G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16;
pub const G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = Self.G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16;
pub const R12X4_UNORM_PACK16_KHR = Self.R12X4_UNORM_PACK16;
pub const R12X4G12X4_UNORM_2PACK16_KHR = Self.R12X4G12X4_UNORM_2PACK16;
pub const R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = Self.R12X4G12X4B12X4A12X4_UNORM_4PACK16;
pub const G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = Self.G12X4B12X4G12X4R12X4_422_UNORM_4PACK16;
pub const B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = Self.B12X4G12X4R12X4G12X4_422_UNORM_4PACK16;
pub const G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = Self.G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16;
pub const G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = Self.G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16;
pub const G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = Self.G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16;
pub const G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = Self.G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16;
pub const G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = Self.G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16;
pub const G16B16G16R16_422_UNORM_KHR = Self.G16B16G16R16_422_UNORM;
pub const B16G16R16G16_422_UNORM_KHR = Self.B16G16R16G16_422_UNORM;
pub const G16_B16_R16_3PLANE_420_UNORM_KHR = Self.G16_B16_R16_3PLANE_420_UNORM;
pub const G16_B16R16_2PLANE_420_UNORM_KHR = Self.G16_B16R16_2PLANE_420_UNORM;
pub const G16_B16_R16_3PLANE_422_UNORM_KHR = Self.G16_B16_R16_3PLANE_422_UNORM;
pub const G16_B16R16_2PLANE_422_UNORM_KHR = Self.G16_B16R16_2PLANE_422_UNORM;
pub const G16_B16_R16_3PLANE_444_UNORM_KHR = Self.G16_B16_R16_3PLANE_444_UNORM;
};
pub const ImageType = enum(i32) {
T_1D = 0,
T_2D = 1,
T_3D = 2,
_,
};
pub const ImageTiling = enum(i32) {
OPTIMAL = 0,
LINEAR = 1,
DRM_FORMAT_MODIFIER_EXT = 1000158000,
_,
};
pub const PhysicalDeviceType = enum(i32) {
OTHER = 0,
INTEGRATED_GPU = 1,
DISCRETE_GPU = 2,
VIRTUAL_GPU = 3,
CPU = 4,
_,
};
pub const QueryType = enum(i32) {
OCCLUSION = 0,
PIPELINE_STATISTICS = 1,
TIMESTAMP = 2,
TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004,
PERFORMANCE_QUERY_KHR = 1000116000,
ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000,
PERFORMANCE_QUERY_INTEL = 1000210000,
_,
};
pub const SharingMode = enum(i32) {
EXCLUSIVE = 0,
CONCURRENT = 1,
_,
};
pub const ImageLayout = enum(i32) {
UNDEFINED = 0,
GENERAL = 1,
COLOR_ATTACHMENT_OPTIMAL = 2,
DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
SHADER_READ_ONLY_OPTIMAL = 5,
TRANSFER_SRC_OPTIMAL = 6,
TRANSFER_DST_OPTIMAL = 7,
PREINITIALIZED = 8,
DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
DEPTH_ATTACHMENT_OPTIMAL = 1000241000,
DEPTH_READ_ONLY_OPTIMAL = 1000241001,
STENCIL_ATTACHMENT_OPTIMAL = 1000241002,
STENCIL_READ_ONLY_OPTIMAL = 1000241003,
PRESENT_SRC_KHR = 1000001002,
SHARED_PRESENT_KHR = 1000111000,
SHADING_RATE_OPTIMAL_NV = 1000164003,
FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
_,
const Self = @This();
pub const DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = Self.DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL;
pub const DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = Self.DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL;
pub const DEPTH_ATTACHMENT_OPTIMAL_KHR = Self.DEPTH_ATTACHMENT_OPTIMAL;
pub const DEPTH_READ_ONLY_OPTIMAL_KHR = Self.DEPTH_READ_ONLY_OPTIMAL;
pub const STENCIL_ATTACHMENT_OPTIMAL_KHR = Self.STENCIL_ATTACHMENT_OPTIMAL;
pub const STENCIL_READ_ONLY_OPTIMAL_KHR = Self.STENCIL_READ_ONLY_OPTIMAL;
};
pub const ImageViewType = enum(i32) {
T_1D = 0,
T_2D = 1,
T_3D = 2,
CUBE = 3,
T_1D_ARRAY = 4,
T_2D_ARRAY = 5,
CUBE_ARRAY = 6,
_,
};
pub const ComponentSwizzle = enum(i32) {
IDENTITY = 0,
ZERO = 1,
ONE = 2,
R = 3,
G = 4,
B = 5,
A = 6,
_,
};
pub const VertexInputRate = enum(i32) {
VERTEX = 0,
INSTANCE = 1,
_,
};
pub const PrimitiveTopology = enum(i32) {
POINT_LIST = 0,
LINE_LIST = 1,
LINE_STRIP = 2,
TRIANGLE_LIST = 3,
TRIANGLE_STRIP = 4,
TRIANGLE_FAN = 5,
LINE_LIST_WITH_ADJACENCY = 6,
LINE_STRIP_WITH_ADJACENCY = 7,
TRIANGLE_LIST_WITH_ADJACENCY = 8,
TRIANGLE_STRIP_WITH_ADJACENCY = 9,
PATCH_LIST = 10,
_,
};
pub const PolygonMode = enum(i32) {
FILL = 0,
LINE = 1,
POINT = 2,
FILL_RECTANGLE_NV = 1000153000,
_,
};
pub const FrontFace = enum(i32) {
COUNTER_CLOCKWISE = 0,
CLOCKWISE = 1,
_,
};
pub const CompareOp = enum(i32) {
NEVER = 0,
LESS = 1,
EQUAL = 2,
LESS_OR_EQUAL = 3,
GREATER = 4,
NOT_EQUAL = 5,
GREATER_OR_EQUAL = 6,
ALWAYS = 7,
_,
};
pub const StencilOp = enum(i32) {
KEEP = 0,
ZERO = 1,
REPLACE = 2,
INCREMENT_AND_CLAMP = 3,
DECREMENT_AND_CLAMP = 4,
INVERT = 5,
INCREMENT_AND_WRAP = 6,
DECREMENT_AND_WRAP = 7,
_,
};
pub const LogicOp = enum(i32) {
CLEAR = 0,
AND = 1,
AND_REVERSE = 2,
COPY = 3,
AND_INVERTED = 4,
NO_OP = 5,
XOR = 6,
OR = 7,
NOR = 8,
EQUIVALENT = 9,
INVERT = 10,
OR_REVERSE = 11,
COPY_INVERTED = 12,
OR_INVERTED = 13,
NAND = 14,
SET = 15,
_,
};
pub const BlendFactor = enum(i32) {
ZERO = 0,
ONE = 1,
SRC_COLOR = 2,
ONE_MINUS_SRC_COLOR = 3,
DST_COLOR = 4,
ONE_MINUS_DST_COLOR = 5,
SRC_ALPHA = 6,
ONE_MINUS_SRC_ALPHA = 7,
DST_ALPHA = 8,
ONE_MINUS_DST_ALPHA = 9,
CONSTANT_COLOR = 10,
ONE_MINUS_CONSTANT_COLOR = 11,
CONSTANT_ALPHA = 12,
ONE_MINUS_CONSTANT_ALPHA = 13,
SRC_ALPHA_SATURATE = 14,
SRC1_COLOR = 15,
ONE_MINUS_SRC1_COLOR = 16,
SRC1_ALPHA = 17,
ONE_MINUS_SRC1_ALPHA = 18,
_,
};
pub const BlendOp = enum(i32) {
ADD = 0,
SUBTRACT = 1,
REVERSE_SUBTRACT = 2,
MIN = 3,
MAX = 4,
ZERO_EXT = 1000148000,
SRC_EXT = 1000148001,
DST_EXT = 1000148002,
SRC_OVER_EXT = 1000148003,
DST_OVER_EXT = 1000148004,
SRC_IN_EXT = 1000148005,
DST_IN_EXT = 1000148006,
SRC_OUT_EXT = 1000148007,
DST_OUT_EXT = 1000148008,
SRC_ATOP_EXT = 1000148009,
DST_ATOP_EXT = 1000148010,
XOR_EXT = 1000148011,
MULTIPLY_EXT = 1000148012,
SCREEN_EXT = 1000148013,
OVERLAY_EXT = 1000148014,
DARKEN_EXT = 1000148015,
LIGHTEN_EXT = 1000148016,
COLORDODGE_EXT = 1000148017,
COLORBURN_EXT = 1000148018,
HARDLIGHT_EXT = 1000148019,
SOFTLIGHT_EXT = 1000148020,
DIFFERENCE_EXT = 1000148021,
EXCLUSION_EXT = 1000148022,
INVERT_EXT = 1000148023,
INVERT_RGB_EXT = 1000148024,
LINEARDODGE_EXT = 1000148025,
LINEARBURN_EXT = 1000148026,
VIVIDLIGHT_EXT = 1000148027,
LINEARLIGHT_EXT = 1000148028,
PINLIGHT_EXT = 1000148029,
HARDMIX_EXT = 1000148030,
HSL_HUE_EXT = 1000148031,
HSL_SATURATION_EXT = 1000148032,
HSL_COLOR_EXT = 1000148033,
HSL_LUMINOSITY_EXT = 1000148034,
PLUS_EXT = 1000148035,
PLUS_CLAMPED_EXT = 1000148036,
PLUS_CLAMPED_ALPHA_EXT = 1000148037,
PLUS_DARKER_EXT = 1000148038,
MINUS_EXT = 1000148039,
MINUS_CLAMPED_EXT = 1000148040,
CONTRAST_EXT = 1000148041,
INVERT_OVG_EXT = 1000148042,
RED_EXT = 1000148043,
GREEN_EXT = 1000148044,
BLUE_EXT = 1000148045,
_,
};
pub const DynamicState = enum(i32) {
VIEWPORT = 0,
SCISSOR = 1,
LINE_WIDTH = 2,
DEPTH_BIAS = 3,
BLEND_CONSTANTS = 4,
DEPTH_BOUNDS = 5,
STENCIL_COMPARE_MASK = 6,
STENCIL_WRITE_MASK = 7,
STENCIL_REFERENCE = 8,
VIEWPORT_W_SCALING_NV = 1000087000,
DISCARD_RECTANGLE_EXT = 1000099000,
SAMPLE_LOCATIONS_EXT = 1000143000,
VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004,
VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006,
EXCLUSIVE_SCISSOR_NV = 1000205001,
LINE_STIPPLE_EXT = 1000259000,
_,
};
pub const Filter = enum(i32) {
NEAREST = 0,
LINEAR = 1,
CUBIC_IMG = 1000015000,
_,
const Self = @This();
pub const CUBIC_EXT = Self.CUBIC_IMG;
};
pub const SamplerMipmapMode = enum(i32) {
NEAREST = 0,
LINEAR = 1,
_,
};
pub const SamplerAddressMode = enum(i32) {
REPEAT = 0,
MIRRORED_REPEAT = 1,
CLAMP_TO_EDGE = 2,
CLAMP_TO_BORDER = 3,
MIRROR_CLAMP_TO_EDGE = 4,
_,
const Self = @This();
pub const MIRROR_CLAMP_TO_EDGE_KHR = Self.MIRROR_CLAMP_TO_EDGE;
};
pub const BorderColor = enum(i32) {
FLOAT_TRANSPARENT_BLACK = 0,
INT_TRANSPARENT_BLACK = 1,
FLOAT_OPAQUE_BLACK = 2,
INT_OPAQUE_BLACK = 3,
FLOAT_OPAQUE_WHITE = 4,
INT_OPAQUE_WHITE = 5,
_,
};
pub const DescriptorType = enum(i32) {
SAMPLER = 0,
COMBINED_IMAGE_SAMPLER = 1,
SAMPLED_IMAGE = 2,
STORAGE_IMAGE = 3,
UNIFORM_TEXEL_BUFFER = 4,
STORAGE_TEXEL_BUFFER = 5,
UNIFORM_BUFFER = 6,
STORAGE_BUFFER = 7,
UNIFORM_BUFFER_DYNAMIC = 8,
STORAGE_BUFFER_DYNAMIC = 9,
INPUT_ATTACHMENT = 10,
INLINE_UNIFORM_BLOCK_EXT = 1000138000,
ACCELERATION_STRUCTURE_NV = 1000165000,
_,
};
pub const AttachmentLoadOp = enum(i32) {
LOAD = 0,
CLEAR = 1,
DONT_CARE = 2,
_,
};
pub const AttachmentStoreOp = enum(i32) {
STORE = 0,
DONT_CARE = 1,
_,
};
pub const PipelineBindPoint = enum(i32) {
GRAPHICS = 0,
COMPUTE = 1,
RAY_TRACING_NV = 1000165000,
_,
};
pub const CommandBufferLevel = enum(i32) {
PRIMARY = 0,
SECONDARY = 1,
_,
};
pub const IndexType = enum(i32) {
UINT16 = 0,
UINT32 = 1,
NONE_NV = 1000165000,
UINT8_EXT = 1000265000,
_,
};
pub const SubpassContents = enum(i32) {
INLINE = 0,
SECONDARY_COMMAND_BUFFERS = 1,
_,
};
pub const ObjectType = enum(i32) {
UNKNOWN = 0,
INSTANCE = 1,
PHYSICAL_DEVICE = 2,
DEVICE = 3,
QUEUE = 4,
SEMAPHORE = 5,
COMMAND_BUFFER = 6,
FENCE = 7,
DEVICE_MEMORY = 8,
BUFFER = 9,
IMAGE = 10,
EVENT = 11,
QUERY_POOL = 12,
BUFFER_VIEW = 13,
IMAGE_VIEW = 14,
SHADER_MODULE = 15,
PIPELINE_CACHE = 16,
PIPELINE_LAYOUT = 17,
RENDER_PASS = 18,
PIPELINE = 19,
DESCRIPTOR_SET_LAYOUT = 20,
SAMPLER = 21,
DESCRIPTOR_POOL = 22,
DESCRIPTOR_SET = 23,
FRAMEBUFFER = 24,
COMMAND_POOL = 25,
SAMPLER_YCBCR_CONVERSION = 1000156000,
DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,
SURFACE_KHR = 1000000000,
SWAPCHAIN_KHR = 1000001000,
DISPLAY_KHR = 1000002000,
DISPLAY_MODE_KHR = 1000002001,
DEBUG_REPORT_CALLBACK_EXT = 1000011000,
OBJECT_TABLE_NVX = 1000086000,
INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
DEBUG_UTILS_MESSENGER_EXT = 1000128000,
VALIDATION_CACHE_EXT = 1000160000,
ACCELERATION_STRUCTURE_NV = 1000165000,
PERFORMANCE_CONFIGURATION_INTEL = 1000210000,
_,
const Self = @This();
pub const DESCRIPTOR_UPDATE_TEMPLATE_KHR = Self.DESCRIPTOR_UPDATE_TEMPLATE;
pub const SAMPLER_YCBCR_CONVERSION_KHR = Self.SAMPLER_YCBCR_CONVERSION;
};
pub const VendorId = enum(i32) {
VIV = 0x10001,
VSI = 0x10002,
KAZAN = 0x10003,
_,
};
pub const InstanceCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const FormatFeatureFlags = packed struct {
sampledImage: bool = false,
storageImage: bool = false,
storageImageAtomic: bool = false,
uniformTexelBuffer: bool = false,
storageTexelBuffer: bool = false,
storageTexelBufferAtomic: bool = false,
vertexBuffer: bool = false,
colorAttachment: bool = false,
colorAttachmentBlend: bool = false,
depthStencilAttachment: bool = false,
blitSrc: bool = false,
blitDst: bool = false,
sampledImageFilterLinear: bool = false,
sampledImageFilterCubicIMG: bool = false,
transferSrc: bool = false,
transferDst: bool = false,
sampledImageFilterMinmax: bool = false,
midpointChromaSamples: bool = false,
sampledImageYcbcrConversionLinearFilter: bool = false,
sampledImageYcbcrConversionSeparateReconstructionFilter: bool = false,
sampledImageYcbcrConversionChromaReconstructionExplicit: bool = false,
sampledImageYcbcrConversionChromaReconstructionExplicitForceable: bool = false,
disjoint: bool = false,
cositedChromaSamples: bool = false,
fragmentDensityMapEXT: bool = false,
reserved25KHR: bool = false,
reserved26KHR: bool = false,
reserved27KHR: bool = false,
reserved28KHR: bool = false,
reserved29NV: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const transferSrcKHR = Self{ .transferSrc = true };
pub const transferDstKHR = Self{ .transferDst = true };
pub const sampledImageFilterMinmaxEXT = Self{ .sampledImageFilterMinmax = true };
pub const midpointChromaSamplesKHR = Self{ .midpointChromaSamples = true };
pub const sampledImageYcbcrConversionLinearFilterKHR = Self{ .sampledImageYcbcrConversionLinearFilter = true };
pub const sampledImageYcbcrConversionSeparateReconstructionFilterKHR = Self{ .sampledImageYcbcrConversionSeparateReconstructionFilter = true };
pub const sampledImageYcbcrConversionChromaReconstructionExplicitKHR = Self{ .sampledImageYcbcrConversionChromaReconstructionExplicit = true };
pub const sampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = Self{ .sampledImageYcbcrConversionChromaReconstructionExplicitForceable = true };
pub const disjointKHR = Self{ .disjoint = true };
pub const cositedChromaSamplesKHR = Self{ .cositedChromaSamples = true };
pub const sampledImageFilterCubicEXT = Self{ .sampledImageFilterCubicIMG = true };
pub usingnamespace FlagsMixin(Self);
};
pub const ImageUsageFlags = packed struct {
transferSrc: bool = false,
transferDst: bool = false,
sampled: bool = false,
storage: bool = false,
colorAttachment: bool = false,
depthStencilAttachment: bool = false,
transientAttachment: bool = false,
inputAttachment: bool = false,
shadingRateImageNV: bool = false,
fragmentDensityMapEXT: bool = false,
reserved10KHR: bool = false,
reserved11KHR: bool = false,
reserved12KHR: bool = false,
reserved13KHR: bool = false,
reserved14KHR: bool = false,
reserved15KHR: bool = false,
reserved16QCOM: bool = false,
reserved17QCOM: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const ImageCreateFlags = packed struct {
sparseBinding: bool = false,
sparseResidency: bool = false,
sparseAliased: bool = false,
mutableFormat: bool = false,
cubeCompatible: bool = false,
t2DArrayCompatible: bool = false,
splitInstanceBindRegions: bool = false,
blockTexelViewCompatible: bool = false,
extendedUsage: bool = false,
disjoint: bool = false,
alias: bool = false,
protected: bool = false,
sampleLocationsCompatibleDepthEXT: bool = false,
cornerSampledNV: bool = false,
subsampledEXT: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const splitInstanceBindRegionsKHR = Self{ .splitInstanceBindRegions = true };
pub const t2DArrayCompatibleKHR = Self{ .t2DArrayCompatible = true };
pub const blockTexelViewCompatibleKHR = Self{ .blockTexelViewCompatible = true };
pub const extendedUsageKHR = Self{ .extendedUsage = true };
pub const disjointKHR = Self{ .disjoint = true };
pub const aliasKHR = Self{ .alias = true };
pub usingnamespace FlagsMixin(Self);
};
pub const SampleCountFlags = packed struct {
t1: bool = false,
t2: bool = false,
t4: bool = false,
t8: bool = false,
t16: bool = false,
t32: bool = false,
t64: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const QueueFlags = packed struct {
graphics: bool = false,
compute: bool = false,
transfer: bool = false,
sparseBinding: bool = false,
protected: bool = false,
reserved5KHR: bool = false,
reserved6KHR: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const MemoryPropertyFlags = packed struct {
deviceLocal: bool = false,
hostVisible: bool = false,
hostCoherent: bool = false,
hostCached: bool = false,
lazilyAllocated: bool = false,
protected: bool = false,
deviceCoherentAMD: bool = false,
deviceUncachedAMD: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const MemoryHeapFlags = packed struct {
deviceLocal: bool = false,
multiInstance: bool = false,
reserved2KHR: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const multiInstanceKHR = Self{ .multiInstance = true };
pub usingnamespace FlagsMixin(Self);
};
pub const DeviceCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const DeviceQueueCreateFlags = packed struct {
protected: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineStageFlags = packed struct {
topOfPipe: bool = false,
drawIndirect: bool = false,
vertexInput: bool = false,
vertexShader: bool = false,
tessellationControlShader: bool = false,
tessellationEvaluationShader: bool = false,
geometryShader: bool = false,
fragmentShader: bool = false,
earlyFragmentTests: bool = false,
lateFragmentTests: bool = false,
colorAttachmentOutput: bool = false,
computeShader: bool = false,
transfer: bool = false,
bottomOfPipe: bool = false,
host: bool = false,
allGraphics: bool = false,
allCommands: bool = false,
commandProcessNVX: bool = false,
conditionalRenderingEXT: bool = false,
taskShaderNV: bool = false,
meshShaderNV: bool = false,
rayTracingShaderNV: bool = false,
shadingRateImageNV: bool = false,
fragmentDensityProcessEXT: bool = false,
transformFeedbackEXT: bool = false,
accelerationStructureBuildNV: bool = false,
reserved26KHR: bool = false,
reserved27KHR: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const MemoryMapFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const ImageAspectFlags = packed struct {
color: bool = false,
depth: bool = false,
stencil: bool = false,
metadata: bool = false,
plane0: bool = false,
plane1: bool = false,
plane2: bool = false,
memoryPlane0EXT: bool = false,
memoryPlane1EXT: bool = false,
memoryPlane2EXT: bool = false,
memoryPlane3EXT: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const plane0KHR = Self{ .plane0 = true };
pub const plane1KHR = Self{ .plane1 = true };
pub const plane2KHR = Self{ .plane2 = true };
pub usingnamespace FlagsMixin(Self);
};
pub const SparseImageFormatFlags = packed struct {
singleMiptail: bool = false,
alignedMipSize: bool = false,
nonstandardBlockSize: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const SparseMemoryBindFlags = packed struct {
metadata: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const FenceCreateFlags = packed struct {
signaled: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const SemaphoreCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const EventCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const QueryPoolCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const QueryPipelineStatisticFlags = packed struct {
inputAssemblyVertices: bool = false,
inputAssemblyPrimitives: bool = false,
vertexShaderInvocations: bool = false,
geometryShaderInvocations: bool = false,
geometryShaderPrimitives: bool = false,
clippingInvocations: bool = false,
clippingPrimitives: bool = false,
fragmentShaderInvocations: bool = false,
tessellationControlShaderPatches: bool = false,
tessellationEvaluationShaderInvocations: bool = false,
computeShaderInvocations: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const QueryResultFlags = packed struct {
t64: bool = false,
wait: bool = false,
withAvailability: bool = false,
partial: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const BufferCreateFlags = packed struct {
sparseBinding: bool = false,
sparseResidency: bool = false,
sparseAliased: bool = false,
protected: bool = false,
deviceAddressCaptureReplay: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const deviceAddressCaptureReplayEXT = Self{ .deviceAddressCaptureReplay = true };
pub const deviceAddressCaptureReplayKHR = Self{ .deviceAddressCaptureReplay = true };
pub usingnamespace FlagsMixin(Self);
};
pub const BufferUsageFlags = packed struct {
transferSrc: bool = false,
transferDst: bool = false,
uniformTexelBuffer: bool = false,
storageTexelBuffer: bool = false,
uniformBuffer: bool = false,
storageBuffer: bool = false,
indexBuffer: bool = false,
vertexBuffer: bool = false,
indirectBuffer: bool = false,
conditionalRenderingEXT: bool = false,
rayTracingNV: bool = false,
transformFeedbackBufferEXT: bool = false,
transformFeedbackCounterBufferEXT: bool = false,
reserved13KHR: bool = false,
reserved14KHR: bool = false,
reserved15KHR: bool = false,
reserved16KHR: bool = false,
shaderDeviceAddress: bool = false,
reserved18QCOM: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const shaderDeviceAddressEXT = Self{ .shaderDeviceAddress = true };
pub const shaderDeviceAddressKHR = Self{ .shaderDeviceAddress = true };
pub usingnamespace FlagsMixin(Self);
};
pub const BufferViewCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const ImageViewCreateFlags = packed struct {
fragmentDensityMapDynamicEXT: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const ShaderModuleCreateFlags = packed struct {
reserved0NV: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineCacheCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineCreateFlags = packed struct {
disableOptimization: bool = false,
allowDerivatives: bool = false,
derivative: bool = false,
viewIndexFromDeviceIndex: bool = false,
dispatchBase: bool = false,
deferCompileNV: bool = false,
captureStatisticsKHR: bool = false,
captureInternalRepresentationsKHR: bool = false,
reserved8EXT: bool = false,
reserved9EXT: bool = false,
reserved10EXT: bool = false,
extension1510_NV: bool = false,
extension2910_NV: bool = false,
extension2911_NV: bool = false,
extension1511_NV: bool = false,
extension1512_NV: bool = false,
extension1513_NV: bool = false,
extension1514_NV: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const viewIndexFromDeviceIndexKHR = Self{ .viewIndexFromDeviceIndex = true };
pub const dispatchBaseKhr = Self{ .dispatchBase = true };
pub usingnamespace FlagsMixin(Self);
};
pub const PipelineShaderStageCreateFlags = packed struct {
allowVaryingSubgroupSizeEXT: bool = false,
requireFullSubgroupsEXT: bool = false,
reserved2NV: bool = false,
reserved3KHR: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const ShaderStageFlags = packed struct {
vertex: bool = false,
tessellationControl: bool = false,
tessellationEvaluation: bool = false,
geometry: bool = false,
fragment: bool = false,
compute: bool = false,
taskNV: bool = false,
meshNV: bool = false,
raygenNV: bool = false,
anyHitNV: bool = false,
closestHitNV: bool = false,
missNV: bool = false,
intersectionNV: bool = false,
callableNV: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const allGraphics = Self.fromInt(0x0000001F);
pub const all = Self.fromInt(0x7FFFFFFF);
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineVertexInputStateCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineInputAssemblyStateCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineTessellationStateCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineViewportStateCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineRasterizationStateCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const CullModeFlags = packed struct {
front: bool = false,
back: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const none = Self.fromInt(0);
pub const frontAndBack = Self.fromInt(0x00000003);
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineMultisampleStateCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineDepthStencilStateCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineColorBlendStateCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const ColorComponentFlags = packed struct {
r: bool = false,
g: bool = false,
b: bool = false,
a: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineDynamicStateCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineLayoutCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const SamplerCreateFlags = packed struct {
subsampledEXT: bool = false,
subsampledCoarseReconstructionEXT: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const DescriptorSetLayoutCreateFlags = packed struct {
pushDescriptorKHR: bool = false,
updateAfterBindPool: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const updateAfterBindPoolEXT = Self{ .updateAfterBindPool = true };
pub usingnamespace FlagsMixin(Self);
};
pub const DescriptorPoolCreateFlags = packed struct {
freeDescriptorSet: bool = false,
updateAfterBind: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const updateAfterBindEXT = Self{ .updateAfterBind = true };
pub usingnamespace FlagsMixin(Self);
};
pub const DescriptorPoolResetFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const FramebufferCreateFlags = packed struct {
imageless: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const imagelessKHR = Self{ .imageless = true };
pub usingnamespace FlagsMixin(Self);
};
pub const RenderPassCreateFlags = packed struct {
reserved0KHR: bool = false,
renderPassReserved1_QCOM: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const AttachmentDescriptionFlags = packed struct {
mayAlias: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const SubpassDescriptionFlags = packed struct {
perViewAttributesNVX: bool = false,
perViewPositionXOnlyNVX: bool = false,
reserved2QCOM: bool = false,
reserved3QCOM: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const AccessFlags = packed struct {
indirectCommandRead: bool = false,
indexRead: bool = false,
vertexAttributeRead: bool = false,
uniformRead: bool = false,
inputAttachmentRead: bool = false,
shaderRead: bool = false,
shaderWrite: bool = false,
colorAttachmentRead: bool = false,
colorAttachmentWrite: bool = false,
depthStencilAttachmentRead: bool = false,
depthStencilAttachmentWrite: bool = false,
transferRead: bool = false,
transferWrite: bool = false,
hostRead: bool = false,
hostWrite: bool = false,
memoryRead: bool = false,
memoryWrite: bool = false,
commandProcessReadNVX: bool = false,
commandProcessWriteNVX: bool = false,
colorAttachmentReadNoncoherentEXT: bool = false,
conditionalRenderingReadEXT: bool = false,
accelerationStructureReadNV: bool = false,
accelerationStructureWriteNV: bool = false,
shadingRateImageReadNV: bool = false,
fragmentDensityMapReadEXT: bool = false,
transformFeedbackWriteEXT: bool = false,
transformFeedbackCounterReadEXT: bool = false,
transformFeedbackCounterWriteEXT: bool = false,
reserved28KHR: bool = false,
reserved29KHR: bool = false,
reserved30KHR: bool = false,
reserved31KHR: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const DependencyFlags = packed struct {
byRegion: bool = false,
viewLocal: bool = false,
deviceGroup: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const viewLocalKHR = Self{ .viewLocal = true };
pub const deviceGroupKHR = Self{ .deviceGroup = true };
pub usingnamespace FlagsMixin(Self);
};
pub const CommandPoolCreateFlags = packed struct {
transient: bool = false,
resetCommandBuffer: bool = false,
protected: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const CommandPoolResetFlags = packed struct {
releaseResources: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const CommandBufferUsageFlags = packed struct {
oneTimeSubmit: bool = false,
renderPassContinue: bool = false,
simultaneousUse: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const QueryControlFlags = packed struct {
precise: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const CommandBufferResetFlags = packed struct {
releaseResources: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const StencilFaceFlags = packed struct {
front: bool = false,
back: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const frontAndBack = Self.fromInt(0x00000003);
pub const stencilFrontAndBack = Self{ .frontAndBack = true };
pub usingnamespace FlagsMixin(Self);
};
pub const ApplicationInfo = extern struct {
sType: StructureType = .APPLICATION_INFO,
pNext: ?*const anyopaque = null,
pApplicationName: ?CString = null,
applicationVersion: u32,
pEngineName: ?CString = null,
engineVersion: u32,
apiVersion: u32,
};
pub const InstanceCreateInfo = extern struct {
sType: StructureType = .INSTANCE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: InstanceCreateFlags align(4) = InstanceCreateFlags{},
pApplicationInfo: ?*const ApplicationInfo = null,
enabledLayerCount: u32 = 0,
ppEnabledLayerNames: [*]const CString = undefined,
enabledExtensionCount: u32 = 0,
ppEnabledExtensionNames: [*]const CString = undefined,
};
pub const PFN_AllocationFunction = fn (
?*anyopaque,
usize,
usize,
SystemAllocationScope,
) callconv(CallConv) ?*anyopaque;
pub const PFN_ReallocationFunction = fn (
?*anyopaque,
?*anyopaque,
usize,
usize,
SystemAllocationScope,
) callconv(CallConv) ?*anyopaque;
pub const PFN_FreeFunction = fn (
?*anyopaque,
?*anyopaque,
) callconv(CallConv) void;
pub const PFN_InternalAllocationNotification = fn (
?*anyopaque,
usize,
InternalAllocationType,
SystemAllocationScope,
) callconv(CallConv) void;
pub const PFN_InternalFreeNotification = fn (
?*anyopaque,
usize,
InternalAllocationType,
SystemAllocationScope,
) callconv(CallConv) void;
pub const AllocationCallbacks = extern struct {
pUserData: ?*anyopaque = null,
pfnAllocation: PFN_AllocationFunction,
pfnReallocation: PFN_ReallocationFunction,
pfnFree: PFN_FreeFunction,
pfnInternalAllocation: ?PFN_InternalAllocationNotification = null,
pfnInternalFree: ?PFN_InternalFreeNotification = null,
};
pub const PhysicalDeviceFeatures = extern struct {
robustBufferAccess: Bool32,
fullDrawIndexUint32: Bool32,
imageCubeArray: Bool32,
independentBlend: Bool32,
geometryShader: Bool32,
tessellationShader: Bool32,
sampleRateShading: Bool32,
dualSrcBlend: Bool32,
logicOp: Bool32,
multiDrawIndirect: Bool32,
drawIndirectFirstInstance: Bool32,
depthClamp: Bool32,
depthBiasClamp: Bool32,
fillModeNonSolid: Bool32,
depthBounds: Bool32,
wideLines: Bool32,
largePoints: Bool32,
alphaToOne: Bool32,
multiViewport: Bool32,
samplerAnisotropy: Bool32,
textureCompressionETC2: Bool32,
textureCompressionASTC_LDR: Bool32,
textureCompressionBC: Bool32,
occlusionQueryPrecise: Bool32,
pipelineStatisticsQuery: Bool32,
vertexPipelineStoresAndAtomics: Bool32,
fragmentStoresAndAtomics: Bool32,
shaderTessellationAndGeometryPointSize: Bool32,
shaderImageGatherExtended: Bool32,
shaderStorageImageExtendedFormats: Bool32,
shaderStorageImageMultisample: Bool32,
shaderStorageImageReadWithoutFormat: Bool32,
shaderStorageImageWriteWithoutFormat: Bool32,
shaderUniformBufferArrayDynamicIndexing: Bool32,
shaderSampledImageArrayDynamicIndexing: Bool32,
shaderStorageBufferArrayDynamicIndexing: Bool32,
shaderStorageImageArrayDynamicIndexing: Bool32,
shaderClipDistance: Bool32,
shaderCullDistance: Bool32,
shaderFloat64: Bool32,
shaderInt64: Bool32,
shaderInt16: Bool32,
shaderResourceResidency: Bool32,
shaderResourceMinLod: Bool32,
sparseBinding: Bool32,
sparseResidencyBuffer: Bool32,
sparseResidencyImage2D: Bool32,
sparseResidencyImage3D: Bool32,
sparseResidency2Samples: Bool32,
sparseResidency4Samples: Bool32,
sparseResidency8Samples: Bool32,
sparseResidency16Samples: Bool32,
sparseResidencyAliased: Bool32,
variableMultisampleRate: Bool32,
inheritedQueries: Bool32,
};
pub const FormatProperties = extern struct {
linearTilingFeatures: FormatFeatureFlags align(4) = FormatFeatureFlags{},
optimalTilingFeatures: FormatFeatureFlags align(4) = FormatFeatureFlags{},
bufferFeatures: FormatFeatureFlags align(4) = FormatFeatureFlags{},
};
pub const Extent3D = extern struct {
width: u32,
height: u32,
depth: u32,
};
pub const ImageFormatProperties = extern struct {
maxExtent: Extent3D,
maxMipLevels: u32,
maxArrayLayers: u32,
sampleCounts: SampleCountFlags align(4) = SampleCountFlags{},
maxResourceSize: DeviceSize,
};
pub const PhysicalDeviceLimits = extern struct {
maxImageDimension1D: u32,
maxImageDimension2D: u32,
maxImageDimension3D: u32,
maxImageDimensionCube: u32,
maxImageArrayLayers: u32,
maxTexelBufferElements: u32,
maxUniformBufferRange: u32,
maxStorageBufferRange: u32,
maxPushConstantsSize: u32,
maxMemoryAllocationCount: u32,
maxSamplerAllocationCount: u32,
bufferImageGranularity: DeviceSize,
sparseAddressSpaceSize: DeviceSize,
maxBoundDescriptorSets: u32,
maxPerStageDescriptorSamplers: u32,
maxPerStageDescriptorUniformBuffers: u32,
maxPerStageDescriptorStorageBuffers: u32,
maxPerStageDescriptorSampledImages: u32,
maxPerStageDescriptorStorageImages: u32,
maxPerStageDescriptorInputAttachments: u32,
maxPerStageResources: u32,
maxDescriptorSetSamplers: u32,
maxDescriptorSetUniformBuffers: u32,
maxDescriptorSetUniformBuffersDynamic: u32,
maxDescriptorSetStorageBuffers: u32,
maxDescriptorSetStorageBuffersDynamic: u32,
maxDescriptorSetSampledImages: u32,
maxDescriptorSetStorageImages: u32,
maxDescriptorSetInputAttachments: u32,
maxVertexInputAttributes: u32,
maxVertexInputBindings: u32,
maxVertexInputAttributeOffset: u32,
maxVertexInputBindingStride: u32,
maxVertexOutputComponents: u32,
maxTessellationGenerationLevel: u32,
maxTessellationPatchSize: u32,
maxTessellationControlPerVertexInputComponents: u32,
maxTessellationControlPerVertexOutputComponents: u32,
maxTessellationControlPerPatchOutputComponents: u32,
maxTessellationControlTotalOutputComponents: u32,
maxTessellationEvaluationInputComponents: u32,
maxTessellationEvaluationOutputComponents: u32,
maxGeometryShaderInvocations: u32,
maxGeometryInputComponents: u32,
maxGeometryOutputComponents: u32,
maxGeometryOutputVertices: u32,
maxGeometryTotalOutputComponents: u32,
maxFragmentInputComponents: u32,
maxFragmentOutputAttachments: u32,
maxFragmentDualSrcAttachments: u32,
maxFragmentCombinedOutputResources: u32,
maxComputeSharedMemorySize: u32,
maxComputeWorkGroupCount: [3]u32,
maxComputeWorkGroupInvocations: u32,
maxComputeWorkGroupSize: [3]u32,
subPixelPrecisionBits: u32,
subTexelPrecisionBits: u32,
mipmapPrecisionBits: u32,
maxDrawIndexedIndexValue: u32,
maxDrawIndirectCount: u32,
maxSamplerLodBias: f32,
maxSamplerAnisotropy: f32,
maxViewports: u32,
maxViewportDimensions: [2]u32,
viewportBoundsRange: [2]f32,
viewportSubPixelBits: u32,
minMemoryMapAlignment: usize,
minTexelBufferOffsetAlignment: DeviceSize,
minUniformBufferOffsetAlignment: DeviceSize,
minStorageBufferOffsetAlignment: DeviceSize,
minTexelOffset: i32,
maxTexelOffset: u32,
minTexelGatherOffset: i32,
maxTexelGatherOffset: u32,
minInterpolationOffset: f32,
maxInterpolationOffset: f32,
subPixelInterpolationOffsetBits: u32,
maxFramebufferWidth: u32,
maxFramebufferHeight: u32,
maxFramebufferLayers: u32,
framebufferColorSampleCounts: SampleCountFlags align(4) = SampleCountFlags{},
framebufferDepthSampleCounts: SampleCountFlags align(4) = SampleCountFlags{},
framebufferStencilSampleCounts: SampleCountFlags align(4) = SampleCountFlags{},
framebufferNoAttachmentsSampleCounts: SampleCountFlags align(4) = SampleCountFlags{},
maxColorAttachments: u32,
sampledImageColorSampleCounts: SampleCountFlags align(4) = SampleCountFlags{},
sampledImageIntegerSampleCounts: SampleCountFlags align(4) = SampleCountFlags{},
sampledImageDepthSampleCounts: SampleCountFlags align(4) = SampleCountFlags{},
sampledImageStencilSampleCounts: SampleCountFlags align(4) = SampleCountFlags{},
storageImageSampleCounts: SampleCountFlags align(4) = SampleCountFlags{},
maxSampleMaskWords: u32,
timestampComputeAndGraphics: Bool32,
timestampPeriod: f32,
maxClipDistances: u32,
maxCullDistances: u32,
maxCombinedClipAndCullDistances: u32,
discreteQueuePriorities: u32,
pointSizeRange: [2]f32,
lineWidthRange: [2]f32,
pointSizeGranularity: f32,
lineWidthGranularity: f32,
strictLines: Bool32,
standardSampleLocations: Bool32,
optimalBufferCopyOffsetAlignment: DeviceSize,
optimalBufferCopyRowPitchAlignment: DeviceSize,
nonCoherentAtomSize: DeviceSize,
};
pub const PhysicalDeviceSparseProperties = extern struct {
residencyStandard2DBlockShape: Bool32,
residencyStandard2DMultisampleBlockShape: Bool32,
residencyStandard3DBlockShape: Bool32,
residencyAlignedMipSize: Bool32,
residencyNonResidentStrict: Bool32,
};
pub const PhysicalDeviceProperties = extern struct {
apiVersion: u32,
driverVersion: u32,
vendorID: u32,
deviceID: u32,
deviceType: PhysicalDeviceType,
deviceName: [MAX_PHYSICAL_DEVICE_NAME_SIZE-1:0]u8,
pipelineCacheUUID: [UUID_SIZE]u8,
limits: PhysicalDeviceLimits,
sparseProperties: PhysicalDeviceSparseProperties,
};
pub const QueueFamilyProperties = extern struct {
queueFlags: QueueFlags align(4) = QueueFlags{},
queueCount: u32,
timestampValidBits: u32,
minImageTransferGranularity: Extent3D,
};
pub const MemoryType = extern struct {
propertyFlags: MemoryPropertyFlags align(4) = MemoryPropertyFlags{},
heapIndex: u32,
};
pub const MemoryHeap = extern struct {
size: DeviceSize,
flags: MemoryHeapFlags align(4) = MemoryHeapFlags{},
};
pub const PhysicalDeviceMemoryProperties = extern struct {
memoryTypeCount: u32,
memoryTypes: [MAX_MEMORY_TYPES]MemoryType,
memoryHeapCount: u32,
memoryHeaps: [MAX_MEMORY_HEAPS]MemoryHeap,
};
pub const PFN_VoidFunction = fn () callconv(CallConv) void;
pub const DeviceQueueCreateInfo = extern struct {
sType: StructureType = .DEVICE_QUEUE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: DeviceQueueCreateFlags align(4) = DeviceQueueCreateFlags{},
queueFamilyIndex: u32,
queueCount: u32,
pQueuePriorities: [*]const f32,
};
pub const DeviceCreateInfo = extern struct {
sType: StructureType = .DEVICE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: DeviceCreateFlags align(4) = DeviceCreateFlags{},
queueCreateInfoCount: u32,
pQueueCreateInfos: [*]const DeviceQueueCreateInfo,
enabledLayerCount: u32 = 0,
ppEnabledLayerNames: [*]const CString = undefined,
enabledExtensionCount: u32 = 0,
ppEnabledExtensionNames: [*]const CString = undefined,
pEnabledFeatures: ?*const PhysicalDeviceFeatures = null,
};
pub const ExtensionProperties = extern struct {
extensionName: [MAX_EXTENSION_NAME_SIZE-1:0]u8,
specVersion: u32,
};
pub const LayerProperties = extern struct {
layerName: [MAX_EXTENSION_NAME_SIZE-1:0]u8,
specVersion: u32,
implementationVersion: u32,
description: [MAX_DESCRIPTION_SIZE-1:0]u8,
};
pub const SubmitInfo = extern struct {
sType: StructureType = .SUBMIT_INFO,
pNext: ?*const anyopaque = null,
waitSemaphoreCount: u32 = 0,
pWaitSemaphores: [*]const Semaphore = undefined,
pWaitDstStageMask: [*]align(4) const PipelineStageFlags = undefined,
commandBufferCount: u32 = 0,
pCommandBuffers: [*]const CommandBuffer = undefined,
signalSemaphoreCount: u32 = 0,
pSignalSemaphores: [*]const Semaphore = undefined,
};
pub const MemoryAllocateInfo = extern struct {
sType: StructureType = .MEMORY_ALLOCATE_INFO,
pNext: ?*const anyopaque = null,
allocationSize: DeviceSize,
memoryTypeIndex: u32,
};
pub const MappedMemoryRange = extern struct {
sType: StructureType = .MAPPED_MEMORY_RANGE,
pNext: ?*const anyopaque = null,
memory: DeviceMemory,
offset: DeviceSize,
size: DeviceSize,
};
pub const MemoryRequirements = extern struct {
size: DeviceSize,
alignment: DeviceSize,
memoryTypeBits: u32,
};
pub const SparseImageFormatProperties = extern struct {
aspectMask: ImageAspectFlags align(4) = ImageAspectFlags{},
imageGranularity: Extent3D,
flags: SparseImageFormatFlags align(4) = SparseImageFormatFlags{},
};
pub const SparseImageMemoryRequirements = extern struct {
formatProperties: SparseImageFormatProperties,
imageMipTailFirstLod: u32,
imageMipTailSize: DeviceSize,
imageMipTailOffset: DeviceSize,
imageMipTailStride: DeviceSize,
};
pub const SparseMemoryBind = extern struct {
resourceOffset: DeviceSize,
size: DeviceSize,
memory: DeviceMemory = DeviceMemory.Null,
memoryOffset: DeviceSize,
flags: SparseMemoryBindFlags align(4) = SparseMemoryBindFlags{},
};
pub const SparseBufferMemoryBindInfo = extern struct {
buffer: Buffer,
bindCount: u32,
pBinds: [*]const SparseMemoryBind,
};
pub const SparseImageOpaqueMemoryBindInfo = extern struct {
image: Image,
bindCount: u32,
pBinds: [*]const SparseMemoryBind,
};
pub const ImageSubresource = extern struct {
aspectMask: ImageAspectFlags align(4),
mipLevel: u32,
arrayLayer: u32,
};
pub const Offset3D = extern struct {
x: i32,
y: i32,
z: i32,
};
pub const SparseImageMemoryBind = extern struct {
subresource: ImageSubresource,
offset: Offset3D,
extent: Extent3D,
memory: DeviceMemory = DeviceMemory.Null,
memoryOffset: DeviceSize,
flags: SparseMemoryBindFlags align(4) = SparseMemoryBindFlags{},
};
pub const SparseImageMemoryBindInfo = extern struct {
image: Image,
bindCount: u32,
pBinds: [*]const SparseImageMemoryBind,
};
pub const BindSparseInfo = extern struct {
sType: StructureType = .BIND_SPARSE_INFO,
pNext: ?*const anyopaque = null,
waitSemaphoreCount: u32 = 0,
pWaitSemaphores: [*]const Semaphore = undefined,
bufferBindCount: u32 = 0,
pBufferBinds: [*]const SparseBufferMemoryBindInfo = undefined,
imageOpaqueBindCount: u32 = 0,
pImageOpaqueBinds: [*]const SparseImageOpaqueMemoryBindInfo = undefined,
imageBindCount: u32 = 0,
pImageBinds: [*]const SparseImageMemoryBindInfo = undefined,
signalSemaphoreCount: u32 = 0,
pSignalSemaphores: [*]const Semaphore = undefined,
};
pub const FenceCreateInfo = extern struct {
sType: StructureType = .FENCE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: FenceCreateFlags align(4) = FenceCreateFlags{},
};
pub const SemaphoreCreateInfo = extern struct {
sType: StructureType = .SEMAPHORE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: SemaphoreCreateFlags align(4) = SemaphoreCreateFlags{},
};
pub const EventCreateInfo = extern struct {
sType: StructureType = .EVENT_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: EventCreateFlags align(4) = EventCreateFlags{},
};
pub const QueryPoolCreateInfo = extern struct {
sType: StructureType = .QUERY_POOL_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: QueryPoolCreateFlags align(4) = QueryPoolCreateFlags{},
queryType: QueryType,
queryCount: u32,
pipelineStatistics: QueryPipelineStatisticFlags align(4) = QueryPipelineStatisticFlags{},
};
pub const BufferCreateInfo = extern struct {
sType: StructureType = .BUFFER_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: BufferCreateFlags align(4) = BufferCreateFlags{},
size: DeviceSize,
usage: BufferUsageFlags align(4),
sharingMode: SharingMode,
queueFamilyIndexCount: u32 = 0,
pQueueFamilyIndices: [*]const u32 = undefined,
};
pub const BufferViewCreateInfo = extern struct {
sType: StructureType = .BUFFER_VIEW_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: BufferViewCreateFlags align(4) = BufferViewCreateFlags{},
buffer: Buffer,
format: Format,
offset: DeviceSize,
range: DeviceSize,
};
pub const ImageCreateInfo = extern struct {
sType: StructureType = .IMAGE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: ImageCreateFlags align(4) = ImageCreateFlags{},
imageType: ImageType,
format: Format,
extent: Extent3D,
mipLevels: u32,
arrayLayers: u32,
samples: SampleCountFlags align(4),
tiling: ImageTiling,
usage: ImageUsageFlags align(4),
sharingMode: SharingMode,
queueFamilyIndexCount: u32 = 0,
pQueueFamilyIndices: [*]const u32 = undefined,
initialLayout: ImageLayout,
};
pub const SubresourceLayout = extern struct {
offset: DeviceSize,
size: DeviceSize,
rowPitch: DeviceSize,
arrayPitch: DeviceSize,
depthPitch: DeviceSize,
};
pub const ComponentMapping = extern struct {
r: ComponentSwizzle,
g: ComponentSwizzle,
b: ComponentSwizzle,
a: ComponentSwizzle,
};
pub const ImageSubresourceRange = extern struct {
aspectMask: ImageAspectFlags align(4),
baseMipLevel: u32,
levelCount: u32,
baseArrayLayer: u32,
layerCount: u32,
};
pub const ImageViewCreateInfo = extern struct {
sType: StructureType = .IMAGE_VIEW_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: ImageViewCreateFlags align(4) = ImageViewCreateFlags{},
image: Image,
viewType: ImageViewType,
format: Format,
components: ComponentMapping,
subresourceRange: ImageSubresourceRange,
};
pub const ShaderModuleCreateInfo = extern struct {
sType: StructureType = .SHADER_MODULE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: ShaderModuleCreateFlags align(4) = ShaderModuleCreateFlags{},
codeSize: usize,
pCode: [*]const u32,
};
pub const PipelineCacheCreateInfo = extern struct {
sType: StructureType = .PIPELINE_CACHE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineCacheCreateFlags align(4) = PipelineCacheCreateFlags{},
initialDataSize: usize = 0,
pInitialData: ?*const anyopaque = undefined,
};
pub const SpecializationMapEntry = extern struct {
constantID: u32,
offset: u32,
size: usize,
};
pub const SpecializationInfo = extern struct {
mapEntryCount: u32 = 0,
pMapEntries: [*]const SpecializationMapEntry = undefined,
dataSize: usize = 0,
pData: ?*const anyopaque = undefined,
};
pub const PipelineShaderStageCreateInfo = extern struct {
sType: StructureType = .PIPELINE_SHADER_STAGE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineShaderStageCreateFlags align(4) = PipelineShaderStageCreateFlags{},
stage: ShaderStageFlags align(4),
module: ShaderModule,
pName: CString,
pSpecializationInfo: ?*const SpecializationInfo = null,
};
pub const VertexInputBindingDescription = extern struct {
binding: u32,
stride: u32,
inputRate: VertexInputRate,
};
pub const VertexInputAttributeDescription = extern struct {
location: u32,
binding: u32,
format: Format,
offset: u32,
};
pub const PipelineVertexInputStateCreateInfo = extern struct {
sType: StructureType = .PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineVertexInputStateCreateFlags align(4) = PipelineVertexInputStateCreateFlags{},
vertexBindingDescriptionCount: u32 = 0,
pVertexBindingDescriptions: [*]const VertexInputBindingDescription = undefined,
vertexAttributeDescriptionCount: u32 = 0,
pVertexAttributeDescriptions: [*]const VertexInputAttributeDescription = undefined,
};
pub const PipelineInputAssemblyStateCreateInfo = extern struct {
sType: StructureType = .PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineInputAssemblyStateCreateFlags align(4) = PipelineInputAssemblyStateCreateFlags{},
topology: PrimitiveTopology,
primitiveRestartEnable: Bool32,
};
pub const PipelineTessellationStateCreateInfo = extern struct {
sType: StructureType = .PIPELINE_TESSELLATION_STATE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineTessellationStateCreateFlags align(4) = PipelineTessellationStateCreateFlags{},
patchControlPoints: u32,
};
pub const Viewport = extern struct {
x: f32,
y: f32,
width: f32,
height: f32,
minDepth: f32,
maxDepth: f32,
};
pub const Offset2D = extern struct {
x: i32,
y: i32,
};
pub const Extent2D = extern struct {
width: u32,
height: u32,
};
pub const Rect2D = extern struct {
offset: Offset2D,
extent: Extent2D,
};
pub const PipelineViewportStateCreateInfo = extern struct {
sType: StructureType = .PIPELINE_VIEWPORT_STATE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineViewportStateCreateFlags align(4) = PipelineViewportStateCreateFlags{},
viewportCount: u32,
pViewports: ?[*]const Viewport = null,
scissorCount: u32,
pScissors: ?[*]const Rect2D = null,
};
pub const PipelineRasterizationStateCreateInfo = extern struct {
sType: StructureType = .PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineRasterizationStateCreateFlags align(4) = PipelineRasterizationStateCreateFlags{},
depthClampEnable: Bool32,
rasterizerDiscardEnable: Bool32,
polygonMode: PolygonMode,
cullMode: CullModeFlags align(4) = CullModeFlags{},
frontFace: FrontFace,
depthBiasEnable: Bool32,
depthBiasConstantFactor: f32,
depthBiasClamp: f32,
depthBiasSlopeFactor: f32,
lineWidth: f32,
};
pub const PipelineMultisampleStateCreateInfo = extern struct {
sType: StructureType = .PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineMultisampleStateCreateFlags align(4) = PipelineMultisampleStateCreateFlags{},
rasterizationSamples: SampleCountFlags align(4),
sampleShadingEnable: Bool32,
minSampleShading: f32,
pSampleMask: ?[*]const SampleMask = null,
alphaToCoverageEnable: Bool32,
alphaToOneEnable: Bool32,
};
pub const StencilOpState = extern struct {
failOp: StencilOp,
passOp: StencilOp,
depthFailOp: StencilOp,
compareOp: CompareOp,
compareMask: u32,
writeMask: u32,
reference: u32,
};
pub const PipelineDepthStencilStateCreateInfo = extern struct {
sType: StructureType = .PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineDepthStencilStateCreateFlags align(4) = PipelineDepthStencilStateCreateFlags{},
depthTestEnable: Bool32,
depthWriteEnable: Bool32,
depthCompareOp: CompareOp,
depthBoundsTestEnable: Bool32,
stencilTestEnable: Bool32,
front: StencilOpState,
back: StencilOpState,
minDepthBounds: f32,
maxDepthBounds: f32,
};
pub const PipelineColorBlendAttachmentState = extern struct {
blendEnable: Bool32,
srcColorBlendFactor: BlendFactor,
dstColorBlendFactor: BlendFactor,
colorBlendOp: BlendOp,
srcAlphaBlendFactor: BlendFactor,
dstAlphaBlendFactor: BlendFactor,
alphaBlendOp: BlendOp,
colorWriteMask: ColorComponentFlags align(4) = ColorComponentFlags{},
};
pub const PipelineColorBlendStateCreateInfo = extern struct {
sType: StructureType = .PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineColorBlendStateCreateFlags align(4) = PipelineColorBlendStateCreateFlags{},
logicOpEnable: Bool32,
logicOp: LogicOp,
attachmentCount: u32 = 0,
pAttachments: [*]const PipelineColorBlendAttachmentState = undefined,
blendConstants: [4]f32,
};
pub const PipelineDynamicStateCreateInfo = extern struct {
sType: StructureType = .PIPELINE_DYNAMIC_STATE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineDynamicStateCreateFlags align(4) = PipelineDynamicStateCreateFlags{},
dynamicStateCount: u32 = 0,
pDynamicStates: [*]const DynamicState = undefined,
};
pub const GraphicsPipelineCreateInfo = extern struct {
sType: StructureType = .GRAPHICS_PIPELINE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineCreateFlags align(4) = PipelineCreateFlags{},
stageCount: u32,
pStages: [*]const PipelineShaderStageCreateInfo,
pVertexInputState: ?*const PipelineVertexInputStateCreateInfo = null,
pInputAssemblyState: ?*const PipelineInputAssemblyStateCreateInfo = null,
pTessellationState: ?*const PipelineTessellationStateCreateInfo = null,
pViewportState: ?*const PipelineViewportStateCreateInfo = null,
pRasterizationState: *const PipelineRasterizationStateCreateInfo,
pMultisampleState: ?*const PipelineMultisampleStateCreateInfo = null,
pDepthStencilState: ?*const PipelineDepthStencilStateCreateInfo = null,
pColorBlendState: ?*const PipelineColorBlendStateCreateInfo = null,
pDynamicState: ?*const PipelineDynamicStateCreateInfo = null,
layout: PipelineLayout,
renderPass: RenderPass,
subpass: u32,
basePipelineHandle: Pipeline = Pipeline.Null,
basePipelineIndex: i32,
};
pub const ComputePipelineCreateInfo = extern struct {
sType: StructureType = .COMPUTE_PIPELINE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineCreateFlags align(4) = PipelineCreateFlags{},
stage: PipelineShaderStageCreateInfo,
layout: PipelineLayout,
basePipelineHandle: Pipeline = Pipeline.Null,
basePipelineIndex: i32,
};
pub const PushConstantRange = extern struct {
stageFlags: ShaderStageFlags align(4),
offset: u32,
size: u32,
};
pub const PipelineLayoutCreateInfo = extern struct {
sType: StructureType = .PIPELINE_LAYOUT_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: PipelineLayoutCreateFlags align(4) = PipelineLayoutCreateFlags{},
setLayoutCount: u32 = 0,
pSetLayouts: [*]const DescriptorSetLayout = undefined,
pushConstantRangeCount: u32 = 0,
pPushConstantRanges: [*]const PushConstantRange = undefined,
};
pub const SamplerCreateInfo = extern struct {
sType: StructureType = .SAMPLER_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: SamplerCreateFlags align(4) = SamplerCreateFlags{},
magFilter: Filter,
minFilter: Filter,
mipmapMode: SamplerMipmapMode,
addressModeU: SamplerAddressMode,
addressModeV: SamplerAddressMode,
addressModeW: SamplerAddressMode,
mipLodBias: f32,
anisotropyEnable: Bool32,
maxAnisotropy: f32,
compareEnable: Bool32,
compareOp: CompareOp,
minLod: f32,
maxLod: f32,
borderColor: BorderColor,
unnormalizedCoordinates: Bool32,
};
pub const DescriptorSetLayoutBinding = extern struct {
binding: u32,
descriptorType: DescriptorType,
descriptorCount: u32 = 0,
stageFlags: ShaderStageFlags align(4),
pImmutableSamplers: ?[*]const Sampler = null,
};
pub const DescriptorSetLayoutCreateInfo = extern struct {
sType: StructureType = .DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: DescriptorSetLayoutCreateFlags align(4) = DescriptorSetLayoutCreateFlags{},
bindingCount: u32 = 0,
pBindings: [*]const DescriptorSetLayoutBinding = undefined,
};
pub const DescriptorPoolSize = extern struct {
inType: DescriptorType,
descriptorCount: u32,
};
pub const DescriptorPoolCreateInfo = extern struct {
sType: StructureType = .DESCRIPTOR_POOL_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: DescriptorPoolCreateFlags align(4) = DescriptorPoolCreateFlags{},
maxSets: u32,
poolSizeCount: u32,
pPoolSizes: [*]const DescriptorPoolSize,
};
pub const DescriptorSetAllocateInfo = extern struct {
sType: StructureType = .DESCRIPTOR_SET_ALLOCATE_INFO,
pNext: ?*const anyopaque = null,
descriptorPool: DescriptorPool,
descriptorSetCount: u32,
pSetLayouts: [*]const DescriptorSetLayout,
};
pub const DescriptorImageInfo = extern struct {
sampler: Sampler,
imageView: ImageView,
imageLayout: ImageLayout,
};
pub const DescriptorBufferInfo = extern struct {
buffer: Buffer,
offset: DeviceSize,
range: DeviceSize,
};
pub const WriteDescriptorSet = extern struct {
sType: StructureType = .WRITE_DESCRIPTOR_SET,
pNext: ?*const anyopaque = null,
dstSet: DescriptorSet,
dstBinding: u32,
dstArrayElement: u32,
descriptorCount: u32,
descriptorType: DescriptorType,
pImageInfo: [*]const DescriptorImageInfo,
pBufferInfo: [*]const DescriptorBufferInfo,
pTexelBufferView: [*]const BufferView,
};
pub const CopyDescriptorSet = extern struct {
sType: StructureType = .COPY_DESCRIPTOR_SET,
pNext: ?*const anyopaque = null,
srcSet: DescriptorSet,
srcBinding: u32,
srcArrayElement: u32,
dstSet: DescriptorSet,
dstBinding: u32,
dstArrayElement: u32,
descriptorCount: u32,
};
pub const FramebufferCreateInfo = extern struct {
sType: StructureType = .FRAMEBUFFER_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: FramebufferCreateFlags align(4) = FramebufferCreateFlags{},
renderPass: RenderPass,
attachmentCount: u32 = 0,
pAttachments: [*]const ImageView = undefined,
width: u32,
height: u32,
layers: u32,
};
pub const AttachmentDescription = extern struct {
flags: AttachmentDescriptionFlags align(4) = AttachmentDescriptionFlags{},
format: Format,
samples: SampleCountFlags align(4),
loadOp: AttachmentLoadOp,
storeOp: AttachmentStoreOp,
stencilLoadOp: AttachmentLoadOp,
stencilStoreOp: AttachmentStoreOp,
initialLayout: ImageLayout,
finalLayout: ImageLayout,
};
pub const AttachmentReference = extern struct {
attachment: u32,
layout: ImageLayout,
};
pub const SubpassDescription = extern struct {
flags: SubpassDescriptionFlags align(4) = SubpassDescriptionFlags{},
pipelineBindPoint: PipelineBindPoint,
inputAttachmentCount: u32 = 0,
pInputAttachments: [*]const AttachmentReference = undefined,
colorAttachmentCount: u32 = 0,
pColorAttachments: [*]const AttachmentReference = undefined,
pResolveAttachments: ?[*]const AttachmentReference = null,
pDepthStencilAttachment: ?*const AttachmentReference = null,
preserveAttachmentCount: u32 = 0,
pPreserveAttachments: [*]const u32 = undefined,
};
pub const SubpassDependency = extern struct {
srcSubpass: u32,
dstSubpass: u32,
srcStageMask: PipelineStageFlags align(4),
dstStageMask: PipelineStageFlags align(4),
srcAccessMask: AccessFlags align(4) = AccessFlags{},
dstAccessMask: AccessFlags align(4) = AccessFlags{},
dependencyFlags: DependencyFlags align(4) = DependencyFlags{},
};
pub const RenderPassCreateInfo = extern struct {
sType: StructureType = .RENDER_PASS_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: RenderPassCreateFlags align(4) = RenderPassCreateFlags{},
attachmentCount: u32 = 0,
pAttachments: [*]const AttachmentDescription = undefined,
subpassCount: u32,
pSubpasses: [*]const SubpassDescription,
dependencyCount: u32 = 0,
pDependencies: [*]const SubpassDependency = undefined,
};
pub const CommandPoolCreateInfo = extern struct {
sType: StructureType = .COMMAND_POOL_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: CommandPoolCreateFlags align(4) = CommandPoolCreateFlags{},
queueFamilyIndex: u32,
};
pub const CommandBufferAllocateInfo = extern struct {
sType: StructureType = .COMMAND_BUFFER_ALLOCATE_INFO,
pNext: ?*const anyopaque = null,
commandPool: CommandPool,
level: CommandBufferLevel,
commandBufferCount: u32,
};
pub const CommandBufferInheritanceInfo = extern struct {
sType: StructureType = .COMMAND_BUFFER_INHERITANCE_INFO,
pNext: ?*const anyopaque = null,
renderPass: RenderPass = RenderPass.Null,
subpass: u32,
framebuffer: Framebuffer = Framebuffer.Null,
occlusionQueryEnable: Bool32,
queryFlags: QueryControlFlags align(4) = QueryControlFlags{},
pipelineStatistics: QueryPipelineStatisticFlags align(4) = QueryPipelineStatisticFlags{},
};
pub const CommandBufferBeginInfo = extern struct {
sType: StructureType = .COMMAND_BUFFER_BEGIN_INFO,
pNext: ?*const anyopaque = null,
flags: CommandBufferUsageFlags align(4) = CommandBufferUsageFlags{},
pInheritanceInfo: ?*const CommandBufferInheritanceInfo = null,
};
pub const BufferCopy = extern struct {
srcOffset: DeviceSize,
dstOffset: DeviceSize,
size: DeviceSize,
};
pub const ImageSubresourceLayers = extern struct {
aspectMask: ImageAspectFlags align(4),
mipLevel: u32,
baseArrayLayer: u32,
layerCount: u32,
};
pub const ImageCopy = extern struct {
srcSubresource: ImageSubresourceLayers,
srcOffset: Offset3D,
dstSubresource: ImageSubresourceLayers,
dstOffset: Offset3D,
extent: Extent3D,
};
pub const ImageBlit = extern struct {
srcSubresource: ImageSubresourceLayers,
srcOffsets: [2]Offset3D,
dstSubresource: ImageSubresourceLayers,
dstOffsets: [2]Offset3D,
};
pub const BufferImageCopy = extern struct {
bufferOffset: DeviceSize,
bufferRowLength: u32,
bufferImageHeight: u32,
imageSubresource: ImageSubresourceLayers,
imageOffset: Offset3D,
imageExtent: Extent3D,
};
pub const ClearColorValue = extern union {
float32: [4]f32,
int32: [4]i32,
uint32: [4]u32,
};
pub const ClearDepthStencilValue = extern struct {
depth: f32,
stencil: u32,
};
pub const ClearValue = extern union {
color: ClearColorValue,
depthStencil: ClearDepthStencilValue,
};
pub const ClearAttachment = extern struct {
aspectMask: ImageAspectFlags align(4),
colorAttachment: u32,
clearValue: ClearValue,
};
pub const ClearRect = extern struct {
rect: Rect2D,
baseArrayLayer: u32,
layerCount: u32,
};
pub const ImageResolve = extern struct {
srcSubresource: ImageSubresourceLayers,
srcOffset: Offset3D,
dstSubresource: ImageSubresourceLayers,
dstOffset: Offset3D,
extent: Extent3D,
};
pub const MemoryBarrier = extern struct {
sType: StructureType = .MEMORY_BARRIER,
pNext: ?*const anyopaque = null,
srcAccessMask: AccessFlags align(4) = AccessFlags{},
dstAccessMask: AccessFlags align(4) = AccessFlags{},
};
pub const BufferMemoryBarrier = extern struct {
sType: StructureType = .BUFFER_MEMORY_BARRIER,
pNext: ?*const anyopaque = null,
srcAccessMask: AccessFlags align(4),
dstAccessMask: AccessFlags align(4),
srcQueueFamilyIndex: u32,
dstQueueFamilyIndex: u32,
buffer: Buffer,
offset: DeviceSize,
size: DeviceSize,
};
pub const ImageMemoryBarrier = extern struct {
sType: StructureType = .IMAGE_MEMORY_BARRIER,
pNext: ?*const anyopaque = null,
srcAccessMask: AccessFlags align(4),
dstAccessMask: AccessFlags align(4),
oldLayout: ImageLayout,
newLayout: ImageLayout,
srcQueueFamilyIndex: u32,
dstQueueFamilyIndex: u32,
image: Image,
subresourceRange: ImageSubresourceRange,
};
pub const RenderPassBeginInfo = extern struct {
sType: StructureType = .RENDER_PASS_BEGIN_INFO,
pNext: ?*const anyopaque = null,
renderPass: RenderPass,
framebuffer: Framebuffer,
renderArea: Rect2D,
clearValueCount: u32 = 0,
pClearValues: [*]const ClearValue = undefined,
};
pub const DispatchIndirectCommand = extern struct {
x: u32,
y: u32,
z: u32,
};
pub const DrawIndexedIndirectCommand = extern struct {
indexCount: u32,
instanceCount: u32,
firstIndex: u32,
vertexOffset: i32,
firstInstance: u32,
};
pub const DrawIndirectCommand = extern struct {
vertexCount: u32,
instanceCount: u32,
firstVertex: u32,
firstInstance: u32,
};
pub const BaseOutStructure = extern struct {
sType: StructureType,
pNext: *@This(),
};
pub const BaseInStructure = extern struct {
sType: StructureType,
pNext: *const @This(),
};
pub extern fn vkCreateInstance(
pCreateInfo: *const InstanceCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pInstance: *Instance,
) callconv(CallConv) Result;
pub extern fn vkDestroyInstance(
instance: Instance,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkEnumeratePhysicalDevices(
instance: Instance,
pPhysicalDeviceCount: *u32,
pPhysicalDevices: ?[*]PhysicalDevice,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDeviceFeatures(
physicalDevice: PhysicalDevice,
pFeatures: *PhysicalDeviceFeatures,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceFormatProperties(
physicalDevice: PhysicalDevice,
format: Format,
pFormatProperties: *FormatProperties,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceImageFormatProperties(
physicalDevice: PhysicalDevice,
format: Format,
inType: ImageType,
tiling: ImageTiling,
usage: ImageUsageFlags.IntType,
flags: ImageCreateFlags.IntType,
pImageFormatProperties: *ImageFormatProperties,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDeviceProperties(
physicalDevice: PhysicalDevice,
pProperties: *PhysicalDeviceProperties,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceQueueFamilyProperties(
physicalDevice: PhysicalDevice,
pQueueFamilyPropertyCount: *u32,
pQueueFamilyProperties: ?[*]QueueFamilyProperties,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceMemoryProperties(
physicalDevice: PhysicalDevice,
pMemoryProperties: *PhysicalDeviceMemoryProperties,
) callconv(CallConv) void;
pub extern fn vkGetInstanceProcAddr(
instance: Instance,
pName: CString,
) callconv(CallConv) ?PFN_VoidFunction;
pub extern fn vkGetDeviceProcAddr(
device: Device,
pName: CString,
) callconv(CallConv) ?PFN_VoidFunction;
pub extern fn vkCreateDevice(
physicalDevice: PhysicalDevice,
pCreateInfo: *const DeviceCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pDevice: *Device,
) callconv(CallConv) Result;
pub extern fn vkDestroyDevice(
device: Device,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkEnumerateInstanceExtensionProperties(
pLayerName: ?CString,
pPropertyCount: *u32,
pProperties: ?[*]ExtensionProperties,
) callconv(CallConv) Result;
pub extern fn vkEnumerateDeviceExtensionProperties(
physicalDevice: PhysicalDevice,
pLayerName: ?CString,
pPropertyCount: *u32,
pProperties: ?[*]ExtensionProperties,
) callconv(CallConv) Result;
pub extern fn vkEnumerateInstanceLayerProperties(
pPropertyCount: *u32,
pProperties: ?[*]LayerProperties,
) callconv(CallConv) Result;
pub extern fn vkEnumerateDeviceLayerProperties(
physicalDevice: PhysicalDevice,
pPropertyCount: *u32,
pProperties: ?[*]LayerProperties,
) callconv(CallConv) Result;
pub extern fn vkGetDeviceQueue(
device: Device,
queueFamilyIndex: u32,
queueIndex: u32,
pQueue: *Queue,
) callconv(CallConv) void;
pub extern fn vkQueueSubmit(
queue: Queue,
submitCount: u32,
pSubmits: [*]const SubmitInfo,
fence: Fence,
) callconv(CallConv) Result;
pub extern fn vkQueueWaitIdle(queue: Queue) callconv(CallConv) Result;
pub extern fn vkDeviceWaitIdle(device: Device) callconv(CallConv) Result;
pub extern fn vkAllocateMemory(
device: Device,
pAllocateInfo: *const MemoryAllocateInfo,
pAllocator: ?*const AllocationCallbacks,
pMemory: *DeviceMemory,
) callconv(CallConv) Result;
pub extern fn vkFreeMemory(
device: Device,
memory: DeviceMemory,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkMapMemory(
device: Device,
memory: DeviceMemory,
offset: DeviceSize,
size: DeviceSize,
flags: MemoryMapFlags.IntType,
ppData: ?**anyopaque,
) callconv(CallConv) Result;
pub extern fn vkUnmapMemory(
device: Device,
memory: DeviceMemory,
) callconv(CallConv) void;
pub extern fn vkFlushMappedMemoryRanges(
device: Device,
memoryRangeCount: u32,
pMemoryRanges: [*]const MappedMemoryRange,
) callconv(CallConv) Result;
pub extern fn vkInvalidateMappedMemoryRanges(
device: Device,
memoryRangeCount: u32,
pMemoryRanges: [*]const MappedMemoryRange,
) callconv(CallConv) Result;
pub extern fn vkGetDeviceMemoryCommitment(
device: Device,
memory: DeviceMemory,
pCommittedMemoryInBytes: *DeviceSize,
) callconv(CallConv) void;
pub extern fn vkBindBufferMemory(
device: Device,
buffer: Buffer,
memory: DeviceMemory,
memoryOffset: DeviceSize,
) callconv(CallConv) Result;
pub extern fn vkBindImageMemory(
device: Device,
image: Image,
memory: DeviceMemory,
memoryOffset: DeviceSize,
) callconv(CallConv) Result;
pub extern fn vkGetBufferMemoryRequirements(
device: Device,
buffer: Buffer,
pMemoryRequirements: *MemoryRequirements,
) callconv(CallConv) void;
pub extern fn vkGetImageMemoryRequirements(
device: Device,
image: Image,
pMemoryRequirements: *MemoryRequirements,
) callconv(CallConv) void;
pub extern fn vkGetImageSparseMemoryRequirements(
device: Device,
image: Image,
pSparseMemoryRequirementCount: *u32,
pSparseMemoryRequirements: ?[*]SparseImageMemoryRequirements,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceSparseImageFormatProperties(
physicalDevice: PhysicalDevice,
format: Format,
inType: ImageType,
samples: SampleCountFlags.IntType,
usage: ImageUsageFlags.IntType,
tiling: ImageTiling,
pPropertyCount: *u32,
pProperties: ?[*]SparseImageFormatProperties,
) callconv(CallConv) void;
pub extern fn vkQueueBindSparse(
queue: Queue,
bindInfoCount: u32,
pBindInfo: [*]const BindSparseInfo,
fence: Fence,
) callconv(CallConv) Result;
pub extern fn vkCreateFence(
device: Device,
pCreateInfo: *const FenceCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pFence: *Fence,
) callconv(CallConv) Result;
pub extern fn vkDestroyFence(
device: Device,
fence: Fence,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkResetFences(
device: Device,
fenceCount: u32,
pFences: [*]const Fence,
) callconv(CallConv) Result;
pub extern fn vkGetFenceStatus(
device: Device,
fence: Fence,
) callconv(CallConv) Result;
pub extern fn vkWaitForFences(
device: Device,
fenceCount: u32,
pFences: [*]const Fence,
waitAll: Bool32,
timeout: u64,
) callconv(CallConv) Result;
pub extern fn vkCreateSemaphore(
device: Device,
pCreateInfo: *const SemaphoreCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pSemaphore: *Semaphore,
) callconv(CallConv) Result;
pub extern fn vkDestroySemaphore(
device: Device,
semaphore: Semaphore,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkCreateEvent(
device: Device,
pCreateInfo: *const EventCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pEvent: *Event,
) callconv(CallConv) Result;
pub extern fn vkDestroyEvent(
device: Device,
event: Event,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkGetEventStatus(
device: Device,
event: Event,
) callconv(CallConv) Result;
pub extern fn vkSetEvent(
device: Device,
event: Event,
) callconv(CallConv) Result;
pub extern fn vkResetEvent(
device: Device,
event: Event,
) callconv(CallConv) Result;
pub extern fn vkCreateQueryPool(
device: Device,
pCreateInfo: *const QueryPoolCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pQueryPool: *QueryPool,
) callconv(CallConv) Result;
pub extern fn vkDestroyQueryPool(
device: Device,
queryPool: QueryPool,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkGetQueryPoolResults(
device: Device,
queryPool: QueryPool,
firstQuery: u32,
queryCount: u32,
dataSize: usize,
pData: ?*anyopaque,
stride: DeviceSize,
flags: QueryResultFlags.IntType,
) callconv(CallConv) Result;
pub extern fn vkCreateBuffer(
device: Device,
pCreateInfo: *const BufferCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pBuffer: *Buffer,
) callconv(CallConv) Result;
pub extern fn vkDestroyBuffer(
device: Device,
buffer: Buffer,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkCreateBufferView(
device: Device,
pCreateInfo: *const BufferViewCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pView: *BufferView,
) callconv(CallConv) Result;
pub extern fn vkDestroyBufferView(
device: Device,
bufferView: BufferView,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkCreateImage(
device: Device,
pCreateInfo: *const ImageCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pImage: *Image,
) callconv(CallConv) Result;
pub extern fn vkDestroyImage(
device: Device,
image: Image,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkGetImageSubresourceLayout(
device: Device,
image: Image,
pSubresource: *const ImageSubresource,
pLayout: *SubresourceLayout,
) callconv(CallConv) void;
pub extern fn vkCreateImageView(
device: Device,
pCreateInfo: *const ImageViewCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pView: *ImageView,
) callconv(CallConv) Result;
pub extern fn vkDestroyImageView(
device: Device,
imageView: ImageView,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkCreateShaderModule(
device: Device,
pCreateInfo: *const ShaderModuleCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pShaderModule: *ShaderModule,
) callconv(CallConv) Result;
pub extern fn vkDestroyShaderModule(
device: Device,
shaderModule: ShaderModule,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkCreatePipelineCache(
device: Device,
pCreateInfo: *const PipelineCacheCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pPipelineCache: *PipelineCache,
) callconv(CallConv) Result;
pub extern fn vkDestroyPipelineCache(
device: Device,
pipelineCache: PipelineCache,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkGetPipelineCacheData(
device: Device,
pipelineCache: PipelineCache,
pDataSize: *usize,
pData: ?*anyopaque,
) callconv(CallConv) Result;
pub extern fn vkMergePipelineCaches(
device: Device,
dstCache: PipelineCache,
srcCacheCount: u32,
pSrcCaches: [*]const PipelineCache,
) callconv(CallConv) Result;
pub extern fn vkCreateGraphicsPipelines(
device: Device,
pipelineCache: PipelineCache,
createInfoCount: u32,
pCreateInfos: [*]const GraphicsPipelineCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pPipelines: [*]Pipeline,
) callconv(CallConv) Result;
pub extern fn vkCreateComputePipelines(
device: Device,
pipelineCache: PipelineCache,
createInfoCount: u32,
pCreateInfos: [*]const ComputePipelineCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pPipelines: [*]Pipeline,
) callconv(CallConv) Result;
pub extern fn vkDestroyPipeline(
device: Device,
pipeline: Pipeline,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkCreatePipelineLayout(
device: Device,
pCreateInfo: *const PipelineLayoutCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pPipelineLayout: *PipelineLayout,
) callconv(CallConv) Result;
pub extern fn vkDestroyPipelineLayout(
device: Device,
pipelineLayout: PipelineLayout,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkCreateSampler(
device: Device,
pCreateInfo: *const SamplerCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pSampler: *Sampler,
) callconv(CallConv) Result;
pub extern fn vkDestroySampler(
device: Device,
sampler: Sampler,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkCreateDescriptorSetLayout(
device: Device,
pCreateInfo: *const DescriptorSetLayoutCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pSetLayout: *DescriptorSetLayout,
) callconv(CallConv) Result;
pub extern fn vkDestroyDescriptorSetLayout(
device: Device,
descriptorSetLayout: DescriptorSetLayout,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkCreateDescriptorPool(
device: Device,
pCreateInfo: *const DescriptorPoolCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pDescriptorPool: *DescriptorPool,
) callconv(CallConv) Result;
pub extern fn vkDestroyDescriptorPool(
device: Device,
descriptorPool: DescriptorPool,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkResetDescriptorPool(
device: Device,
descriptorPool: DescriptorPool,
flags: DescriptorPoolResetFlags.IntType,
) callconv(CallConv) Result;
pub extern fn vkAllocateDescriptorSets(
device: Device,
pAllocateInfo: *const DescriptorSetAllocateInfo,
pDescriptorSets: [*]DescriptorSet,
) callconv(CallConv) Result;
pub extern fn vkFreeDescriptorSets(
device: Device,
descriptorPool: DescriptorPool,
descriptorSetCount: u32,
pDescriptorSets: [*]const DescriptorSet,
) callconv(CallConv) Result;
pub extern fn vkUpdateDescriptorSets(
device: Device,
descriptorWriteCount: u32,
pDescriptorWrites: [*]const WriteDescriptorSet,
descriptorCopyCount: u32,
pDescriptorCopies: [*]const CopyDescriptorSet,
) callconv(CallConv) void;
pub extern fn vkCreateFramebuffer(
device: Device,
pCreateInfo: *const FramebufferCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pFramebuffer: *Framebuffer,
) callconv(CallConv) Result;
pub extern fn vkDestroyFramebuffer(
device: Device,
framebuffer: Framebuffer,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkCreateRenderPass(
device: Device,
pCreateInfo: *const RenderPassCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pRenderPass: *RenderPass,
) callconv(CallConv) Result;
pub extern fn vkDestroyRenderPass(
device: Device,
renderPass: RenderPass,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkGetRenderAreaGranularity(
device: Device,
renderPass: RenderPass,
pGranularity: *Extent2D,
) callconv(CallConv) void;
pub extern fn vkCreateCommandPool(
device: Device,
pCreateInfo: *const CommandPoolCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pCommandPool: *CommandPool,
) callconv(CallConv) Result;
pub extern fn vkDestroyCommandPool(
device: Device,
commandPool: CommandPool,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkResetCommandPool(
device: Device,
commandPool: CommandPool,
flags: CommandPoolResetFlags.IntType,
) callconv(CallConv) Result;
pub extern fn vkAllocateCommandBuffers(
device: Device,
pAllocateInfo: *const CommandBufferAllocateInfo,
pCommandBuffers: [*]CommandBuffer,
) callconv(CallConv) Result;
pub extern fn vkFreeCommandBuffers(
device: Device,
commandPool: CommandPool,
commandBufferCount: u32,
pCommandBuffers: [*]const CommandBuffer,
) callconv(CallConv) void;
pub extern fn vkBeginCommandBuffer(
commandBuffer: CommandBuffer,
pBeginInfo: *const CommandBufferBeginInfo,
) callconv(CallConv) Result;
pub extern fn vkEndCommandBuffer(commandBuffer: CommandBuffer) callconv(CallConv) Result;
pub extern fn vkResetCommandBuffer(
commandBuffer: CommandBuffer,
flags: CommandBufferResetFlags.IntType,
) callconv(CallConv) Result;
pub extern fn vkCmdBindPipeline(
commandBuffer: CommandBuffer,
pipelineBindPoint: PipelineBindPoint,
pipeline: Pipeline,
) callconv(CallConv) void;
pub extern fn vkCmdSetViewport(
commandBuffer: CommandBuffer,
firstViewport: u32,
viewportCount: u32,
pViewports: [*]const Viewport,
) callconv(CallConv) void;
pub extern fn vkCmdSetScissor(
commandBuffer: CommandBuffer,
firstScissor: u32,
scissorCount: u32,
pScissors: [*]const Rect2D,
) callconv(CallConv) void;
pub extern fn vkCmdSetLineWidth(
commandBuffer: CommandBuffer,
lineWidth: f32,
) callconv(CallConv) void;
pub extern fn vkCmdSetDepthBias(
commandBuffer: CommandBuffer,
depthBiasConstantFactor: f32,
depthBiasClamp: f32,
depthBiasSlopeFactor: f32,
) callconv(CallConv) void;
pub extern fn vkCmdSetBlendConstants(
commandBuffer: CommandBuffer,
blendConstants: *const[4]f32,
) callconv(CallConv) void;
pub extern fn vkCmdSetDepthBounds(
commandBuffer: CommandBuffer,
minDepthBounds: f32,
maxDepthBounds: f32,
) callconv(CallConv) void;
pub extern fn vkCmdSetStencilCompareMask(
commandBuffer: CommandBuffer,
faceMask: StencilFaceFlags.IntType,
compareMask: u32,
) callconv(CallConv) void;
pub extern fn vkCmdSetStencilWriteMask(
commandBuffer: CommandBuffer,
faceMask: StencilFaceFlags.IntType,
writeMask: u32,
) callconv(CallConv) void;
pub extern fn vkCmdSetStencilReference(
commandBuffer: CommandBuffer,
faceMask: StencilFaceFlags.IntType,
reference: u32,
) callconv(CallConv) void;
pub extern fn vkCmdBindDescriptorSets(
commandBuffer: CommandBuffer,
pipelineBindPoint: PipelineBindPoint,
layout: PipelineLayout,
firstSet: u32,
descriptorSetCount: u32,
pDescriptorSets: [*]const DescriptorSet,
dynamicOffsetCount: u32,
pDynamicOffsets: [*]const u32,
) callconv(CallConv) void;
pub extern fn vkCmdBindIndexBuffer(
commandBuffer: CommandBuffer,
buffer: Buffer,
offset: DeviceSize,
indexType: IndexType,
) callconv(CallConv) void;
pub extern fn vkCmdBindVertexBuffers(
commandBuffer: CommandBuffer,
firstBinding: u32,
bindingCount: u32,
pBuffers: [*]const Buffer,
pOffsets: [*]const DeviceSize,
) callconv(CallConv) void;
pub extern fn vkCmdDraw(
commandBuffer: CommandBuffer,
vertexCount: u32,
instanceCount: u32,
firstVertex: u32,
firstInstance: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDrawIndexed(
commandBuffer: CommandBuffer,
indexCount: u32,
instanceCount: u32,
firstIndex: u32,
vertexOffset: i32,
firstInstance: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDrawIndirect(
commandBuffer: CommandBuffer,
buffer: Buffer,
offset: DeviceSize,
drawCount: u32,
stride: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDrawIndexedIndirect(
commandBuffer: CommandBuffer,
buffer: Buffer,
offset: DeviceSize,
drawCount: u32,
stride: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDispatch(
commandBuffer: CommandBuffer,
groupCountX: u32,
groupCountY: u32,
groupCountZ: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDispatchIndirect(
commandBuffer: CommandBuffer,
buffer: Buffer,
offset: DeviceSize,
) callconv(CallConv) void;
pub extern fn vkCmdCopyBuffer(
commandBuffer: CommandBuffer,
srcBuffer: Buffer,
dstBuffer: Buffer,
regionCount: u32,
pRegions: [*]const BufferCopy,
) callconv(CallConv) void;
pub extern fn vkCmdCopyImage(
commandBuffer: CommandBuffer,
srcImage: Image,
srcImageLayout: ImageLayout,
dstImage: Image,
dstImageLayout: ImageLayout,
regionCount: u32,
pRegions: [*]const ImageCopy,
) callconv(CallConv) void;
pub extern fn vkCmdBlitImage(
commandBuffer: CommandBuffer,
srcImage: Image,
srcImageLayout: ImageLayout,
dstImage: Image,
dstImageLayout: ImageLayout,
regionCount: u32,
pRegions: [*]const ImageBlit,
filter: Filter,
) callconv(CallConv) void;
pub extern fn vkCmdCopyBufferToImage(
commandBuffer: CommandBuffer,
srcBuffer: Buffer,
dstImage: Image,
dstImageLayout: ImageLayout,
regionCount: u32,
pRegions: [*]const BufferImageCopy,
) callconv(CallConv) void;
pub extern fn vkCmdCopyImageToBuffer(
commandBuffer: CommandBuffer,
srcImage: Image,
srcImageLayout: ImageLayout,
dstBuffer: Buffer,
regionCount: u32,
pRegions: [*]const BufferImageCopy,
) callconv(CallConv) void;
pub extern fn vkCmdUpdateBuffer(
commandBuffer: CommandBuffer,
dstBuffer: Buffer,
dstOffset: DeviceSize,
dataSize: DeviceSize,
pData: ?*const anyopaque,
) callconv(CallConv) void;
pub extern fn vkCmdFillBuffer(
commandBuffer: CommandBuffer,
dstBuffer: Buffer,
dstOffset: DeviceSize,
size: DeviceSize,
data: u32,
) callconv(CallConv) void;
pub extern fn vkCmdClearColorImage(
commandBuffer: CommandBuffer,
image: Image,
imageLayout: ImageLayout,
pColor: *const ClearColorValue,
rangeCount: u32,
pRanges: [*]const ImageSubresourceRange,
) callconv(CallConv) void;
pub extern fn vkCmdClearDepthStencilImage(
commandBuffer: CommandBuffer,
image: Image,
imageLayout: ImageLayout,
pDepthStencil: *const ClearDepthStencilValue,
rangeCount: u32,
pRanges: [*]const ImageSubresourceRange,
) callconv(CallConv) void;
pub extern fn vkCmdClearAttachments(
commandBuffer: CommandBuffer,
attachmentCount: u32,
pAttachments: [*]const ClearAttachment,
rectCount: u32,
pRects: [*]const ClearRect,
) callconv(CallConv) void;
pub extern fn vkCmdResolveImage(
commandBuffer: CommandBuffer,
srcImage: Image,
srcImageLayout: ImageLayout,
dstImage: Image,
dstImageLayout: ImageLayout,
regionCount: u32,
pRegions: [*]const ImageResolve,
) callconv(CallConv) void;
pub extern fn vkCmdSetEvent(
commandBuffer: CommandBuffer,
event: Event,
stageMask: PipelineStageFlags.IntType,
) callconv(CallConv) void;
pub extern fn vkCmdResetEvent(
commandBuffer: CommandBuffer,
event: Event,
stageMask: PipelineStageFlags.IntType,
) callconv(CallConv) void;
pub extern fn vkCmdWaitEvents(
commandBuffer: CommandBuffer,
eventCount: u32,
pEvents: [*]const Event,
srcStageMask: PipelineStageFlags.IntType,
dstStageMask: PipelineStageFlags.IntType,
memoryBarrierCount: u32,
pMemoryBarriers: [*]const MemoryBarrier,
bufferMemoryBarrierCount: u32,
pBufferMemoryBarriers: [*]const BufferMemoryBarrier,
imageMemoryBarrierCount: u32,
pImageMemoryBarriers: [*]const ImageMemoryBarrier,
) callconv(CallConv) void;
pub extern fn vkCmdPipelineBarrier(
commandBuffer: CommandBuffer,
srcStageMask: PipelineStageFlags.IntType,
dstStageMask: PipelineStageFlags.IntType,
dependencyFlags: DependencyFlags.IntType,
memoryBarrierCount: u32,
pMemoryBarriers: [*]const MemoryBarrier,
bufferMemoryBarrierCount: u32,
pBufferMemoryBarriers: [*]const BufferMemoryBarrier,
imageMemoryBarrierCount: u32,
pImageMemoryBarriers: [*]const ImageMemoryBarrier,
) callconv(CallConv) void;
pub extern fn vkCmdBeginQuery(
commandBuffer: CommandBuffer,
queryPool: QueryPool,
query: u32,
flags: QueryControlFlags.IntType,
) callconv(CallConv) void;
pub extern fn vkCmdEndQuery(
commandBuffer: CommandBuffer,
queryPool: QueryPool,
query: u32,
) callconv(CallConv) void;
pub extern fn vkCmdResetQueryPool(
commandBuffer: CommandBuffer,
queryPool: QueryPool,
firstQuery: u32,
queryCount: u32,
) callconv(CallConv) void;
pub extern fn vkCmdWriteTimestamp(
commandBuffer: CommandBuffer,
pipelineStage: PipelineStageFlags.IntType,
queryPool: QueryPool,
query: u32,
) callconv(CallConv) void;
pub extern fn vkCmdCopyQueryPoolResults(
commandBuffer: CommandBuffer,
queryPool: QueryPool,
firstQuery: u32,
queryCount: u32,
dstBuffer: Buffer,
dstOffset: DeviceSize,
stride: DeviceSize,
flags: QueryResultFlags.IntType,
) callconv(CallConv) void;
pub extern fn vkCmdPushConstants(
commandBuffer: CommandBuffer,
layout: PipelineLayout,
stageFlags: ShaderStageFlags.IntType,
offset: u32,
size: u32,
pValues: ?*const anyopaque,
) callconv(CallConv) void;
pub extern fn vkCmdBeginRenderPass(
commandBuffer: CommandBuffer,
pRenderPassBegin: *const RenderPassBeginInfo,
contents: SubpassContents,
) callconv(CallConv) void;
pub extern fn vkCmdNextSubpass(
commandBuffer: CommandBuffer,
contents: SubpassContents,
) callconv(CallConv) void;
pub extern fn vkCmdEndRenderPass(commandBuffer: CommandBuffer) callconv(CallConv) void;
pub extern fn vkCmdExecuteCommands(
commandBuffer: CommandBuffer,
commandBufferCount: u32,
pCommandBuffers: [*]const CommandBuffer,
) callconv(CallConv) void;
pub inline fn CreateInstance(createInfo: InstanceCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INITIALIZATION_FAILED,VK_LAYER_NOT_PRESENT,VK_EXTENSION_NOT_PRESENT,VK_INCOMPATIBLE_DRIVER,VK_UNDOCUMENTED_ERROR}!Instance {
var out_instance: Instance = undefined;
const result = vkCreateInstance(&createInfo, pAllocator, &out_instance);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INITIALIZATION_FAILED => error.VK_INITIALIZATION_FAILED,
.ERROR_LAYER_NOT_PRESENT => error.VK_LAYER_NOT_PRESENT,
.ERROR_EXTENSION_NOT_PRESENT => error.VK_EXTENSION_NOT_PRESENT,
.ERROR_INCOMPATIBLE_DRIVER => error.VK_INCOMPATIBLE_DRIVER,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_instance;
}
pub const DestroyInstance = vkDestroyInstance;
pub const EnumeratePhysicalDevicesResult = struct {
result: Result,
physicalDevices: []PhysicalDevice,
};
pub inline fn EnumeratePhysicalDevices(instance: Instance, physicalDevices: []PhysicalDevice) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INITIALIZATION_FAILED,VK_UNDOCUMENTED_ERROR}!EnumeratePhysicalDevicesResult {
var returnValues: EnumeratePhysicalDevicesResult = undefined;
var physicalDeviceCount: u32 = @intCast(u32, physicalDevices.len);
const result = vkEnumeratePhysicalDevices(instance, &physicalDeviceCount, physicalDevices.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INITIALIZATION_FAILED => error.VK_INITIALIZATION_FAILED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.physicalDevices = physicalDevices[0..physicalDeviceCount];
returnValues.result = result;
return returnValues;
}
pub inline fn EnumeratePhysicalDevicesCount(instance: Instance) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INITIALIZATION_FAILED,VK_UNDOCUMENTED_ERROR}!u32 {
var out_physicalDeviceCount: u32 = undefined;
const result = vkEnumeratePhysicalDevices(instance, &out_physicalDeviceCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INITIALIZATION_FAILED => error.VK_INITIALIZATION_FAILED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_physicalDeviceCount;
}
pub inline fn GetPhysicalDeviceFeatures(physicalDevice: PhysicalDevice) PhysicalDeviceFeatures {
var out_features: PhysicalDeviceFeatures = undefined;
vkGetPhysicalDeviceFeatures(physicalDevice, &out_features);
return out_features;
}
pub inline fn GetPhysicalDeviceFormatProperties(physicalDevice: PhysicalDevice, format: Format) FormatProperties {
var out_formatProperties: FormatProperties = undefined;
vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &out_formatProperties);
return out_formatProperties;
}
pub inline fn GetPhysicalDeviceImageFormatProperties(physicalDevice: PhysicalDevice, format: Format, inType: ImageType, tiling: ImageTiling, usage: ImageUsageFlags, flags: ImageCreateFlags) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_FORMAT_NOT_SUPPORTED,VK_UNDOCUMENTED_ERROR}!ImageFormatProperties {
var out_imageFormatProperties: ImageFormatProperties = undefined;
const result = vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, inType, tiling, usage.toInt(), flags.toInt(), &out_imageFormatProperties);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_FORMAT_NOT_SUPPORTED => error.VK_FORMAT_NOT_SUPPORTED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_imageFormatProperties;
}
pub inline fn GetPhysicalDeviceProperties(physicalDevice: PhysicalDevice) PhysicalDeviceProperties {
var out_properties: PhysicalDeviceProperties = undefined;
vkGetPhysicalDeviceProperties(physicalDevice, &out_properties);
return out_properties;
}
pub inline fn GetPhysicalDeviceQueueFamilyProperties(physicalDevice: PhysicalDevice, queueFamilyProperties: []QueueFamilyProperties) []QueueFamilyProperties {
var out_queueFamilyProperties: []QueueFamilyProperties = undefined;
var queueFamilyPropertyCount: u32 = @intCast(u32, queueFamilyProperties.len);
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyPropertyCount, queueFamilyProperties.ptr);
out_queueFamilyProperties = queueFamilyProperties[0..queueFamilyPropertyCount];
return out_queueFamilyProperties;
}
pub inline fn GetPhysicalDeviceQueueFamilyPropertiesCount(physicalDevice: PhysicalDevice) u32 {
var out_queueFamilyPropertyCount: u32 = undefined;
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &out_queueFamilyPropertyCount, null);
return out_queueFamilyPropertyCount;
}
pub inline fn GetPhysicalDeviceMemoryProperties(physicalDevice: PhysicalDevice) PhysicalDeviceMemoryProperties {
var out_memoryProperties: PhysicalDeviceMemoryProperties = undefined;
vkGetPhysicalDeviceMemoryProperties(physicalDevice, &out_memoryProperties);
return out_memoryProperties;
}
pub const GetInstanceProcAddr = vkGetInstanceProcAddr;
pub const GetDeviceProcAddr = vkGetDeviceProcAddr;
pub inline fn CreateDevice(physicalDevice: PhysicalDevice, createInfo: DeviceCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INITIALIZATION_FAILED,VK_EXTENSION_NOT_PRESENT,VK_FEATURE_NOT_PRESENT,VK_TOO_MANY_OBJECTS,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!Device {
var out_device: Device = undefined;
const result = vkCreateDevice(physicalDevice, &createInfo, pAllocator, &out_device);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INITIALIZATION_FAILED => error.VK_INITIALIZATION_FAILED,
.ERROR_EXTENSION_NOT_PRESENT => error.VK_EXTENSION_NOT_PRESENT,
.ERROR_FEATURE_NOT_PRESENT => error.VK_FEATURE_NOT_PRESENT,
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_device;
}
pub const DestroyDevice = vkDestroyDevice;
pub const EnumerateInstanceExtensionPropertiesResult = struct {
result: Result,
properties: []ExtensionProperties,
};
pub inline fn EnumerateInstanceExtensionProperties(pLayerName: ?CString, properties: []ExtensionProperties) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_LAYER_NOT_PRESENT,VK_UNDOCUMENTED_ERROR}!EnumerateInstanceExtensionPropertiesResult {
var returnValues: EnumerateInstanceExtensionPropertiesResult = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
const result = vkEnumerateInstanceExtensionProperties(pLayerName, &propertyCount, properties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_LAYER_NOT_PRESENT => error.VK_LAYER_NOT_PRESENT,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.properties = properties[0..propertyCount];
returnValues.result = result;
return returnValues;
}
pub inline fn EnumerateInstanceExtensionPropertiesCount(pLayerName: ?CString) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_LAYER_NOT_PRESENT,VK_UNDOCUMENTED_ERROR}!u32 {
var out_propertyCount: u32 = undefined;
const result = vkEnumerateInstanceExtensionProperties(pLayerName, &out_propertyCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_LAYER_NOT_PRESENT => error.VK_LAYER_NOT_PRESENT,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_propertyCount;
}
pub const EnumerateDeviceExtensionPropertiesResult = struct {
result: Result,
properties: []ExtensionProperties,
};
pub inline fn EnumerateDeviceExtensionProperties(physicalDevice: PhysicalDevice, pLayerName: ?CString, properties: []ExtensionProperties) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_LAYER_NOT_PRESENT,VK_UNDOCUMENTED_ERROR}!EnumerateDeviceExtensionPropertiesResult {
var returnValues: EnumerateDeviceExtensionPropertiesResult = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
const result = vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, &propertyCount, properties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_LAYER_NOT_PRESENT => error.VK_LAYER_NOT_PRESENT,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.properties = properties[0..propertyCount];
returnValues.result = result;
return returnValues;
}
pub inline fn EnumerateDeviceExtensionPropertiesCount(physicalDevice: PhysicalDevice, pLayerName: ?CString) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_LAYER_NOT_PRESENT,VK_UNDOCUMENTED_ERROR}!u32 {
var out_propertyCount: u32 = undefined;
const result = vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, &out_propertyCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_LAYER_NOT_PRESENT => error.VK_LAYER_NOT_PRESENT,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_propertyCount;
}
pub const EnumerateInstanceLayerPropertiesResult = struct {
result: Result,
properties: []LayerProperties,
};
pub inline fn EnumerateInstanceLayerProperties(properties: []LayerProperties) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!EnumerateInstanceLayerPropertiesResult {
var returnValues: EnumerateInstanceLayerPropertiesResult = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
const result = vkEnumerateInstanceLayerProperties(&propertyCount, properties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.properties = properties[0..propertyCount];
returnValues.result = result;
return returnValues;
}
pub inline fn EnumerateInstanceLayerPropertiesCount() error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_propertyCount: u32 = undefined;
const result = vkEnumerateInstanceLayerProperties(&out_propertyCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_propertyCount;
}
pub const EnumerateDeviceLayerPropertiesResult = struct {
result: Result,
properties: []LayerProperties,
};
pub inline fn EnumerateDeviceLayerProperties(physicalDevice: PhysicalDevice, properties: []LayerProperties) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!EnumerateDeviceLayerPropertiesResult {
var returnValues: EnumerateDeviceLayerPropertiesResult = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
const result = vkEnumerateDeviceLayerProperties(physicalDevice, &propertyCount, properties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.properties = properties[0..propertyCount];
returnValues.result = result;
return returnValues;
}
pub inline fn EnumerateDeviceLayerPropertiesCount(physicalDevice: PhysicalDevice) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_propertyCount: u32 = undefined;
const result = vkEnumerateDeviceLayerProperties(physicalDevice, &out_propertyCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_propertyCount;
}
pub inline fn GetDeviceQueue(device: Device, queueFamilyIndex: u32, queueIndex: u32) Queue {
var out_queue: Queue = undefined;
vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, &out_queue);
return out_queue;
}
pub inline fn QueueSubmit(queue: Queue, submits: []const SubmitInfo, fence: Fence) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!void {
const result = vkQueueSubmit(queue, @intCast(u32, submits.len), submits.ptr, fence);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn QueueWaitIdle(queue: Queue) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!void {
const result = vkQueueWaitIdle(queue);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn DeviceWaitIdle(device: Device) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!void {
const result = vkDeviceWaitIdle(device);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn AllocateMemory(device: Device, allocateInfo: MemoryAllocateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_TOO_MANY_OBJECTS,VK_INVALID_EXTERNAL_HANDLE,VK_INVALID_OPAQUE_CAPTURE_ADDRESS,VK_UNDOCUMENTED_ERROR}!DeviceMemory {
var out_memory: DeviceMemory = undefined;
const result = vkAllocateMemory(device, &allocateInfo, pAllocator, &out_memory);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_INVALID_EXTERNAL_HANDLE => error.VK_INVALID_EXTERNAL_HANDLE,
.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS => error.VK_INVALID_OPAQUE_CAPTURE_ADDRESS,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_memory;
}
pub const FreeMemory = vkFreeMemory;
pub inline fn MapMemory(device: Device, memory: DeviceMemory, offset: DeviceSize, size: DeviceSize, flags: MemoryMapFlags, ppData: ?**anyopaque) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_MEMORY_MAP_FAILED,VK_UNDOCUMENTED_ERROR}!void {
const result = vkMapMemory(device, memory, offset, size, flags.toInt(), ppData);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_MEMORY_MAP_FAILED => error.VK_MEMORY_MAP_FAILED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub const UnmapMemory = vkUnmapMemory;
pub inline fn FlushMappedMemoryRanges(device: Device, memoryRanges: []const MappedMemoryRange) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkFlushMappedMemoryRanges(device, @intCast(u32, memoryRanges.len), memoryRanges.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn InvalidateMappedMemoryRanges(device: Device, memoryRanges: []const MappedMemoryRange) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkInvalidateMappedMemoryRanges(device, @intCast(u32, memoryRanges.len), memoryRanges.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn GetDeviceMemoryCommitment(device: Device, memory: DeviceMemory) DeviceSize {
var out_committedMemoryInBytes: DeviceSize = undefined;
vkGetDeviceMemoryCommitment(device, memory, &out_committedMemoryInBytes);
return out_committedMemoryInBytes;
}
pub inline fn BindBufferMemory(device: Device, buffer: Buffer, memory: DeviceMemory, memoryOffset: DeviceSize) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INVALID_OPAQUE_CAPTURE_ADDRESS,VK_UNDOCUMENTED_ERROR}!void {
const result = vkBindBufferMemory(device, buffer, memory, memoryOffset);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS => error.VK_INVALID_OPAQUE_CAPTURE_ADDRESS,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn BindImageMemory(device: Device, image: Image, memory: DeviceMemory, memoryOffset: DeviceSize) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkBindImageMemory(device, image, memory, memoryOffset);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn GetBufferMemoryRequirements(device: Device, buffer: Buffer) MemoryRequirements {
var out_memoryRequirements: MemoryRequirements = undefined;
vkGetBufferMemoryRequirements(device, buffer, &out_memoryRequirements);
return out_memoryRequirements;
}
pub inline fn GetImageMemoryRequirements(device: Device, image: Image) MemoryRequirements {
var out_memoryRequirements: MemoryRequirements = undefined;
vkGetImageMemoryRequirements(device, image, &out_memoryRequirements);
return out_memoryRequirements;
}
pub inline fn GetImageSparseMemoryRequirements(device: Device, image: Image, sparseMemoryRequirements: []SparseImageMemoryRequirements) []SparseImageMemoryRequirements {
var out_sparseMemoryRequirements: []SparseImageMemoryRequirements = undefined;
var sparseMemoryRequirementCount: u32 = @intCast(u32, sparseMemoryRequirements.len);
vkGetImageSparseMemoryRequirements(device, image, &sparseMemoryRequirementCount, sparseMemoryRequirements.ptr);
out_sparseMemoryRequirements = sparseMemoryRequirements[0..sparseMemoryRequirementCount];
return out_sparseMemoryRequirements;
}
pub inline fn GetImageSparseMemoryRequirementsCount(device: Device, image: Image) u32 {
var out_sparseMemoryRequirementCount: u32 = undefined;
vkGetImageSparseMemoryRequirements(device, image, &out_sparseMemoryRequirementCount, null);
return out_sparseMemoryRequirementCount;
}
pub inline fn GetPhysicalDeviceSparseImageFormatProperties(physicalDevice: PhysicalDevice, format: Format, inType: ImageType, samples: SampleCountFlags, usage: ImageUsageFlags, tiling: ImageTiling, properties: []SparseImageFormatProperties) []SparseImageFormatProperties {
var out_properties: []SparseImageFormatProperties = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, inType, samples.toInt(), usage.toInt(), tiling, &propertyCount, properties.ptr);
out_properties = properties[0..propertyCount];
return out_properties;
}
pub inline fn GetPhysicalDeviceSparseImageFormatPropertiesCount(physicalDevice: PhysicalDevice, format: Format, inType: ImageType, samples: SampleCountFlags, usage: ImageUsageFlags, tiling: ImageTiling) u32 {
var out_propertyCount: u32 = undefined;
vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, inType, samples.toInt(), usage.toInt(), tiling, &out_propertyCount, null);
return out_propertyCount;
}
pub inline fn QueueBindSparse(queue: Queue, bindInfo: []const BindSparseInfo, fence: Fence) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!void {
const result = vkQueueBindSparse(queue, @intCast(u32, bindInfo.len), bindInfo.ptr, fence);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn CreateFence(device: Device, createInfo: FenceCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!Fence {
var out_fence: Fence = undefined;
const result = vkCreateFence(device, &createInfo, pAllocator, &out_fence);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_fence;
}
pub const DestroyFence = vkDestroyFence;
pub inline fn ResetFences(device: Device, fences: []const Fence) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkResetFences(device, @intCast(u32, fences.len), fences.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn GetFenceStatus(device: Device, fence: Fence) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!Result {
const result = vkGetFenceStatus(device, fence);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return result;
}
pub inline fn WaitForFences(device: Device, fences: []const Fence, waitAll: Bool32, timeout: u64) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!Result {
const result = vkWaitForFences(device, @intCast(u32, fences.len), fences.ptr, waitAll, timeout);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return result;
}
pub inline fn CreateSemaphore(device: Device, createInfo: SemaphoreCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!Semaphore {
var out_semaphore: Semaphore = undefined;
const result = vkCreateSemaphore(device, &createInfo, pAllocator, &out_semaphore);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_semaphore;
}
pub const DestroySemaphore = vkDestroySemaphore;
pub inline fn CreateEvent(device: Device, createInfo: EventCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!Event {
var out_event: Event = undefined;
const result = vkCreateEvent(device, &createInfo, pAllocator, &out_event);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_event;
}
pub const DestroyEvent = vkDestroyEvent;
pub inline fn GetEventStatus(device: Device, event: Event) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!Result {
const result = vkGetEventStatus(device, event);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return result;
}
pub inline fn SetEvent(device: Device, event: Event) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkSetEvent(device, event);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn ResetEvent(device: Device, event: Event) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkResetEvent(device, event);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn CreateQueryPool(device: Device, createInfo: QueryPoolCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!QueryPool {
var out_queryPool: QueryPool = undefined;
const result = vkCreateQueryPool(device, &createInfo, pAllocator, &out_queryPool);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_queryPool;
}
pub const DestroyQueryPool = vkDestroyQueryPool;
pub inline fn GetQueryPoolResults(device: Device, queryPool: QueryPool, firstQuery: u32, queryCount: u32, data: []u8, stride: DeviceSize, flags: QueryResultFlags) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!Result {
const result = vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, @intCast(usize, data.len), data.ptr, stride, flags.toInt());
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return result;
}
pub inline fn CreateBuffer(device: Device, createInfo: BufferCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INVALID_OPAQUE_CAPTURE_ADDRESS,VK_UNDOCUMENTED_ERROR}!Buffer {
var out_buffer: Buffer = undefined;
const result = vkCreateBuffer(device, &createInfo, pAllocator, &out_buffer);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS => error.VK_INVALID_OPAQUE_CAPTURE_ADDRESS,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_buffer;
}
pub const DestroyBuffer = vkDestroyBuffer;
pub inline fn CreateBufferView(device: Device, createInfo: BufferViewCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!BufferView {
var out_view: BufferView = undefined;
const result = vkCreateBufferView(device, &createInfo, pAllocator, &out_view);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_view;
}
pub const DestroyBufferView = vkDestroyBufferView;
pub inline fn CreateImage(device: Device, createInfo: ImageCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!Image {
var out_image: Image = undefined;
const result = vkCreateImage(device, &createInfo, pAllocator, &out_image);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_image;
}
pub const DestroyImage = vkDestroyImage;
pub inline fn GetImageSubresourceLayout(device: Device, image: Image, subresource: ImageSubresource) SubresourceLayout {
var out_layout: SubresourceLayout = undefined;
vkGetImageSubresourceLayout(device, image, &subresource, &out_layout);
return out_layout;
}
pub inline fn CreateImageView(device: Device, createInfo: ImageViewCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!ImageView {
var out_view: ImageView = undefined;
const result = vkCreateImageView(device, &createInfo, pAllocator, &out_view);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_view;
}
pub const DestroyImageView = vkDestroyImageView;
pub inline fn CreateShaderModule(device: Device, createInfo: ShaderModuleCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INVALID_SHADER_NV,VK_UNDOCUMENTED_ERROR}!ShaderModule {
var out_shaderModule: ShaderModule = undefined;
const result = vkCreateShaderModule(device, &createInfo, pAllocator, &out_shaderModule);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INVALID_SHADER_NV => error.VK_INVALID_SHADER_NV,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_shaderModule;
}
pub const DestroyShaderModule = vkDestroyShaderModule;
pub inline fn CreatePipelineCache(device: Device, createInfo: PipelineCacheCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!PipelineCache {
var out_pipelineCache: PipelineCache = undefined;
const result = vkCreatePipelineCache(device, &createInfo, pAllocator, &out_pipelineCache);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_pipelineCache;
}
pub const DestroyPipelineCache = vkDestroyPipelineCache;
pub const GetPipelineCacheDataResult = struct {
result: Result,
data: []u8,
};
pub inline fn GetPipelineCacheData(device: Device, pipelineCache: PipelineCache, data: []u8) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetPipelineCacheDataResult {
var returnValues: GetPipelineCacheDataResult = undefined;
var dataSize: usize = @intCast(usize, data.len);
const result = vkGetPipelineCacheData(device, pipelineCache, &dataSize, data.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.data = data[0..dataSize];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPipelineCacheDataCount(device: Device, pipelineCache: PipelineCache) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!usize {
var out_dataSize: usize = undefined;
const result = vkGetPipelineCacheData(device, pipelineCache, &out_dataSize, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_dataSize;
}
pub inline fn MergePipelineCaches(device: Device, dstCache: PipelineCache, srcCaches: []const PipelineCache) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkMergePipelineCaches(device, dstCache, @intCast(u32, srcCaches.len), srcCaches.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn CreateGraphicsPipelines(device: Device, pipelineCache: PipelineCache, createInfos: []const GraphicsPipelineCreateInfo, pAllocator: ?*const AllocationCallbacks, pipelines: []Pipeline) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INVALID_SHADER_NV,VK_UNDOCUMENTED_ERROR}!void {
assert(pipelines.len >= createInfos.len);
const result = vkCreateGraphicsPipelines(device, pipelineCache, @intCast(u32, createInfos.len), createInfos.ptr, pAllocator, pipelines.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INVALID_SHADER_NV => error.VK_INVALID_SHADER_NV,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn CreateComputePipelines(device: Device, pipelineCache: PipelineCache, createInfos: []const ComputePipelineCreateInfo, pAllocator: ?*const AllocationCallbacks, pipelines: []Pipeline) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INVALID_SHADER_NV,VK_UNDOCUMENTED_ERROR}!void {
assert(pipelines.len >= createInfos.len);
const result = vkCreateComputePipelines(device, pipelineCache, @intCast(u32, createInfos.len), createInfos.ptr, pAllocator, pipelines.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INVALID_SHADER_NV => error.VK_INVALID_SHADER_NV,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub const DestroyPipeline = vkDestroyPipeline;
pub inline fn CreatePipelineLayout(device: Device, createInfo: PipelineLayoutCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!PipelineLayout {
var out_pipelineLayout: PipelineLayout = undefined;
const result = vkCreatePipelineLayout(device, &createInfo, pAllocator, &out_pipelineLayout);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_pipelineLayout;
}
pub const DestroyPipelineLayout = vkDestroyPipelineLayout;
pub inline fn CreateSampler(device: Device, createInfo: SamplerCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_TOO_MANY_OBJECTS,VK_UNDOCUMENTED_ERROR}!Sampler {
var out_sampler: Sampler = undefined;
const result = vkCreateSampler(device, &createInfo, pAllocator, &out_sampler);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_sampler;
}
pub const DestroySampler = vkDestroySampler;
pub inline fn CreateDescriptorSetLayout(device: Device, createInfo: DescriptorSetLayoutCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!DescriptorSetLayout {
var out_setLayout: DescriptorSetLayout = undefined;
const result = vkCreateDescriptorSetLayout(device, &createInfo, pAllocator, &out_setLayout);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_setLayout;
}
pub const DestroyDescriptorSetLayout = vkDestroyDescriptorSetLayout;
pub inline fn CreateDescriptorPool(device: Device, createInfo: DescriptorPoolCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_FRAGMENTATION,VK_UNDOCUMENTED_ERROR}!DescriptorPool {
var out_descriptorPool: DescriptorPool = undefined;
const result = vkCreateDescriptorPool(device, &createInfo, pAllocator, &out_descriptorPool);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_FRAGMENTATION => error.VK_FRAGMENTATION,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_descriptorPool;
}
pub const DestroyDescriptorPool = vkDestroyDescriptorPool;
pub inline fn ResetDescriptorPool(device: Device, descriptorPool: DescriptorPool, flags: DescriptorPoolResetFlags) error{VK_UNDOCUMENTED_ERROR}!void {
const result = vkResetDescriptorPool(device, descriptorPool, flags.toInt());
if (@bitCast(c_int, result) < 0) {
return error.VK_UNDOCUMENTED_ERROR;
}
}
pub inline fn AllocateDescriptorSets(device: Device, allocateInfo: DescriptorSetAllocateInfo, descriptorSets: []DescriptorSet) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_FRAGMENTED_POOL,VK_OUT_OF_POOL_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
assert(descriptorSets.len >= allocateInfo.descriptorSetCount);
const result = vkAllocateDescriptorSets(device, &allocateInfo, descriptorSets.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_FRAGMENTED_POOL => error.VK_FRAGMENTED_POOL,
.ERROR_OUT_OF_POOL_MEMORY => error.VK_OUT_OF_POOL_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn FreeDescriptorSets(device: Device, descriptorPool: DescriptorPool, descriptorSets: []const DescriptorSet) error{VK_UNDOCUMENTED_ERROR}!void {
const result = vkFreeDescriptorSets(device, descriptorPool, @intCast(u32, descriptorSets.len), descriptorSets.ptr);
if (@bitCast(c_int, result) < 0) {
return error.VK_UNDOCUMENTED_ERROR;
}
}
pub inline fn UpdateDescriptorSets(device: Device, descriptorWrites: []const WriteDescriptorSet, descriptorCopies: []const CopyDescriptorSet) void {
vkUpdateDescriptorSets(device, @intCast(u32, descriptorWrites.len), descriptorWrites.ptr, @intCast(u32, descriptorCopies.len), descriptorCopies.ptr);
}
pub inline fn CreateFramebuffer(device: Device, createInfo: FramebufferCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!Framebuffer {
var out_framebuffer: Framebuffer = undefined;
const result = vkCreateFramebuffer(device, &createInfo, pAllocator, &out_framebuffer);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_framebuffer;
}
pub const DestroyFramebuffer = vkDestroyFramebuffer;
pub inline fn CreateRenderPass(device: Device, createInfo: RenderPassCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!RenderPass {
var out_renderPass: RenderPass = undefined;
const result = vkCreateRenderPass(device, &createInfo, pAllocator, &out_renderPass);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_renderPass;
}
pub const DestroyRenderPass = vkDestroyRenderPass;
pub inline fn GetRenderAreaGranularity(device: Device, renderPass: RenderPass) Extent2D {
var out_granularity: Extent2D = undefined;
vkGetRenderAreaGranularity(device, renderPass, &out_granularity);
return out_granularity;
}
pub inline fn CreateCommandPool(device: Device, createInfo: CommandPoolCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!CommandPool {
var out_commandPool: CommandPool = undefined;
const result = vkCreateCommandPool(device, &createInfo, pAllocator, &out_commandPool);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_commandPool;
}
pub const DestroyCommandPool = vkDestroyCommandPool;
pub inline fn ResetCommandPool(device: Device, commandPool: CommandPool, flags: CommandPoolResetFlags) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkResetCommandPool(device, commandPool, flags.toInt());
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn AllocateCommandBuffers(device: Device, allocateInfo: CommandBufferAllocateInfo, commandBuffers: []CommandBuffer) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
assert(commandBuffers.len >= allocateInfo.commandBufferCount);
const result = vkAllocateCommandBuffers(device, &allocateInfo, commandBuffers.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn FreeCommandBuffers(device: Device, commandPool: CommandPool, commandBuffers: []const CommandBuffer) void {
vkFreeCommandBuffers(device, commandPool, @intCast(u32, commandBuffers.len), commandBuffers.ptr);
}
pub inline fn BeginCommandBuffer(commandBuffer: CommandBuffer, beginInfo: CommandBufferBeginInfo) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkBeginCommandBuffer(commandBuffer, &beginInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn EndCommandBuffer(commandBuffer: CommandBuffer) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkEndCommandBuffer(commandBuffer);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn ResetCommandBuffer(commandBuffer: CommandBuffer, flags: CommandBufferResetFlags) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkResetCommandBuffer(commandBuffer, flags.toInt());
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub const CmdBindPipeline = vkCmdBindPipeline;
pub inline fn CmdSetViewport(commandBuffer: CommandBuffer, firstViewport: u32, viewports: []const Viewport) void {
vkCmdSetViewport(commandBuffer, firstViewport, @intCast(u32, viewports.len), viewports.ptr);
}
pub inline fn CmdSetScissor(commandBuffer: CommandBuffer, firstScissor: u32, scissors: []const Rect2D) void {
vkCmdSetScissor(commandBuffer, firstScissor, @intCast(u32, scissors.len), scissors.ptr);
}
pub const CmdSetLineWidth = vkCmdSetLineWidth;
pub const CmdSetDepthBias = vkCmdSetDepthBias;
pub inline fn CmdSetBlendConstants(commandBuffer: CommandBuffer, blendConstants: [4]f32) void {
vkCmdSetBlendConstants(commandBuffer, &blendConstants);
}
pub const CmdSetDepthBounds = vkCmdSetDepthBounds;
pub inline fn CmdSetStencilCompareMask(commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, compareMask: u32) void {
vkCmdSetStencilCompareMask(commandBuffer, faceMask.toInt(), compareMask);
}
pub inline fn CmdSetStencilWriteMask(commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, writeMask: u32) void {
vkCmdSetStencilWriteMask(commandBuffer, faceMask.toInt(), writeMask);
}
pub inline fn CmdSetStencilReference(commandBuffer: CommandBuffer, faceMask: StencilFaceFlags, reference: u32) void {
vkCmdSetStencilReference(commandBuffer, faceMask.toInt(), reference);
}
pub inline fn CmdBindDescriptorSets(commandBuffer: CommandBuffer, pipelineBindPoint: PipelineBindPoint, layout: PipelineLayout, firstSet: u32, descriptorSets: []const DescriptorSet, dynamicOffsets: []const u32) void {
vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, @intCast(u32, descriptorSets.len), descriptorSets.ptr, @intCast(u32, dynamicOffsets.len), dynamicOffsets.ptr);
}
pub const CmdBindIndexBuffer = vkCmdBindIndexBuffer;
pub inline fn CmdBindVertexBuffers(commandBuffer: CommandBuffer, firstBinding: u32, buffers: []const Buffer, offsets: []const DeviceSize) void {
assert(offsets.len >= buffers.len);
vkCmdBindVertexBuffers(commandBuffer, firstBinding, @intCast(u32, buffers.len), buffers.ptr, offsets.ptr);
}
pub const CmdDraw = vkCmdDraw;
pub const CmdDrawIndexed = vkCmdDrawIndexed;
pub const CmdDrawIndirect = vkCmdDrawIndirect;
pub const CmdDrawIndexedIndirect = vkCmdDrawIndexedIndirect;
pub const CmdDispatch = vkCmdDispatch;
pub const CmdDispatchIndirect = vkCmdDispatchIndirect;
pub inline fn CmdCopyBuffer(commandBuffer: CommandBuffer, srcBuffer: Buffer, dstBuffer: Buffer, regions: []const BufferCopy) void {
vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, @intCast(u32, regions.len), regions.ptr);
}
pub inline fn CmdCopyImage(commandBuffer: CommandBuffer, srcImage: Image, srcImageLayout: ImageLayout, dstImage: Image, dstImageLayout: ImageLayout, regions: []const ImageCopy) void {
vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, @intCast(u32, regions.len), regions.ptr);
}
pub inline fn CmdBlitImage(commandBuffer: CommandBuffer, srcImage: Image, srcImageLayout: ImageLayout, dstImage: Image, dstImageLayout: ImageLayout, regions: []const ImageBlit, filter: Filter) void {
vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, @intCast(u32, regions.len), regions.ptr, filter);
}
pub inline fn CmdCopyBufferToImage(commandBuffer: CommandBuffer, srcBuffer: Buffer, dstImage: Image, dstImageLayout: ImageLayout, regions: []const BufferImageCopy) void {
vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, @intCast(u32, regions.len), regions.ptr);
}
pub inline fn CmdCopyImageToBuffer(commandBuffer: CommandBuffer, srcImage: Image, srcImageLayout: ImageLayout, dstBuffer: Buffer, regions: []const BufferImageCopy) void {
vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, @intCast(u32, regions.len), regions.ptr);
}
pub inline fn CmdUpdateBuffer(commandBuffer: CommandBuffer, dstBuffer: Buffer, dstOffset: DeviceSize, data: []const u8) void {
vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, @intCast(DeviceSize, data.len), data.ptr);
}
pub const CmdFillBuffer = vkCmdFillBuffer;
pub inline fn CmdClearColorImage(commandBuffer: CommandBuffer, image: Image, imageLayout: ImageLayout, color: ClearColorValue, ranges: []const ImageSubresourceRange) void {
vkCmdClearColorImage(commandBuffer, image, imageLayout, &color, @intCast(u32, ranges.len), ranges.ptr);
}
pub inline fn CmdClearDepthStencilImage(commandBuffer: CommandBuffer, image: Image, imageLayout: ImageLayout, depthStencil: ClearDepthStencilValue, ranges: []const ImageSubresourceRange) void {
vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, &depthStencil, @intCast(u32, ranges.len), ranges.ptr);
}
pub inline fn CmdClearAttachments(commandBuffer: CommandBuffer, attachments: []const ClearAttachment, rects: []const ClearRect) void {
vkCmdClearAttachments(commandBuffer, @intCast(u32, attachments.len), attachments.ptr, @intCast(u32, rects.len), rects.ptr);
}
pub inline fn CmdResolveImage(commandBuffer: CommandBuffer, srcImage: Image, srcImageLayout: ImageLayout, dstImage: Image, dstImageLayout: ImageLayout, regions: []const ImageResolve) void {
vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, @intCast(u32, regions.len), regions.ptr);
}
pub inline fn CmdSetEvent(commandBuffer: CommandBuffer, event: Event, stageMask: PipelineStageFlags) void {
vkCmdSetEvent(commandBuffer, event, stageMask.toInt());
}
pub inline fn CmdResetEvent(commandBuffer: CommandBuffer, event: Event, stageMask: PipelineStageFlags) void {
vkCmdResetEvent(commandBuffer, event, stageMask.toInt());
}
pub inline fn CmdWaitEvents(commandBuffer: CommandBuffer, events: []const Event, srcStageMask: PipelineStageFlags, dstStageMask: PipelineStageFlags, memoryBarriers: []const MemoryBarrier, bufferMemoryBarriers: []const BufferMemoryBarrier, imageMemoryBarriers: []const ImageMemoryBarrier) void {
vkCmdWaitEvents(commandBuffer, @intCast(u32, events.len), events.ptr, srcStageMask.toInt(), dstStageMask.toInt(), @intCast(u32, memoryBarriers.len), memoryBarriers.ptr, @intCast(u32, bufferMemoryBarriers.len), bufferMemoryBarriers.ptr, @intCast(u32, imageMemoryBarriers.len), imageMemoryBarriers.ptr);
}
pub inline fn CmdPipelineBarrier(commandBuffer: CommandBuffer, srcStageMask: PipelineStageFlags, dstStageMask: PipelineStageFlags, dependencyFlags: DependencyFlags, memoryBarriers: []const MemoryBarrier, bufferMemoryBarriers: []const BufferMemoryBarrier, imageMemoryBarriers: []const ImageMemoryBarrier) void {
vkCmdPipelineBarrier(commandBuffer, srcStageMask.toInt(), dstStageMask.toInt(), dependencyFlags.toInt(), @intCast(u32, memoryBarriers.len), memoryBarriers.ptr, @intCast(u32, bufferMemoryBarriers.len), bufferMemoryBarriers.ptr, @intCast(u32, imageMemoryBarriers.len), imageMemoryBarriers.ptr);
}
pub inline fn CmdBeginQuery(commandBuffer: CommandBuffer, queryPool: QueryPool, query: u32, flags: QueryControlFlags) void {
vkCmdBeginQuery(commandBuffer, queryPool, query, flags.toInt());
}
pub const CmdEndQuery = vkCmdEndQuery;
pub const CmdResetQueryPool = vkCmdResetQueryPool;
pub inline fn CmdWriteTimestamp(commandBuffer: CommandBuffer, pipelineStage: PipelineStageFlags, queryPool: QueryPool, query: u32) void {
vkCmdWriteTimestamp(commandBuffer, pipelineStage.toInt(), queryPool, query);
}
pub inline fn CmdCopyQueryPoolResults(commandBuffer: CommandBuffer, queryPool: QueryPool, firstQuery: u32, queryCount: u32, dstBuffer: Buffer, dstOffset: DeviceSize, stride: DeviceSize, flags: QueryResultFlags) void {
vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags.toInt());
}
pub inline fn CmdPushConstants(commandBuffer: CommandBuffer, layout: PipelineLayout, stageFlags: ShaderStageFlags, offset: u32, values: []const u8) void {
vkCmdPushConstants(commandBuffer, layout, stageFlags.toInt(), offset, @intCast(u32, values.len), values.ptr);
}
pub inline fn CmdBeginRenderPass(commandBuffer: CommandBuffer, renderPassBegin: RenderPassBeginInfo, contents: SubpassContents) void {
vkCmdBeginRenderPass(commandBuffer, &renderPassBegin, contents);
}
pub const CmdNextSubpass = vkCmdNextSubpass;
pub const CmdEndRenderPass = vkCmdEndRenderPass;
pub inline fn CmdExecuteCommands(commandBuffer: CommandBuffer, commandBuffers: []const CommandBuffer) void {
vkCmdExecuteCommands(commandBuffer, @intCast(u32, commandBuffers.len), commandBuffers.ptr);
}
pub const VERSION_1_1 = 1;
// Vulkan 1.1 version number
pub const API_VERSION_1_1 = MAKE_VERSION(1, 1, 0);// Patch version should always be set to 0
pub const SamplerYcbcrConversion = enum(u64) { Null = 0, _ };
pub const DescriptorUpdateTemplate = enum(u64) { Null = 0, _ };
pub const MAX_DEVICE_GROUP_SIZE = 32;
pub const LUID_SIZE = 8;
pub const QUEUE_FAMILY_EXTERNAL = (~@as(u32, 0)-1);
pub const PointClippingBehavior = enum(i32) {
ALL_CLIP_PLANES = 0,
USER_CLIP_PLANES_ONLY = 1,
_,
const Self = @This();
pub const ALL_CLIP_PLANES_KHR = Self.ALL_CLIP_PLANES;
pub const USER_CLIP_PLANES_ONLY_KHR = Self.USER_CLIP_PLANES_ONLY;
};
pub const TessellationDomainOrigin = enum(i32) {
UPPER_LEFT = 0,
LOWER_LEFT = 1,
_,
const Self = @This();
pub const UPPER_LEFT_KHR = Self.UPPER_LEFT;
pub const LOWER_LEFT_KHR = Self.LOWER_LEFT;
};
pub const SamplerYcbcrModelConversion = enum(i32) {
RGB_IDENTITY = 0,
YCBCR_IDENTITY = 1,
YCBCR_709 = 2,
YCBCR_601 = 3,
YCBCR_2020 = 4,
_,
const Self = @This();
pub const RGB_IDENTITY_KHR = Self.RGB_IDENTITY;
pub const YCBCR_IDENTITY_KHR = Self.YCBCR_IDENTITY;
pub const YCBCR_709_KHR = Self.YCBCR_709;
pub const YCBCR_601_KHR = Self.YCBCR_601;
pub const YCBCR_2020_KHR = Self.YCBCR_2020;
};
pub const SamplerYcbcrRange = enum(i32) {
ITU_FULL = 0,
ITU_NARROW = 1,
_,
const Self = @This();
pub const ITU_FULL_KHR = Self.ITU_FULL;
pub const ITU_NARROW_KHR = Self.ITU_NARROW;
};
pub const ChromaLocation = enum(i32) {
COSITED_EVEN = 0,
MIDPOINT = 1,
_,
const Self = @This();
pub const COSITED_EVEN_KHR = Self.COSITED_EVEN;
pub const MIDPOINT_KHR = Self.MIDPOINT;
};
pub const DescriptorUpdateTemplateType = enum(i32) {
DESCRIPTOR_SET = 0,
PUSH_DESCRIPTORS_KHR = 1,
_,
const Self = @This();
pub const DESCRIPTOR_SET_KHR = Self.DESCRIPTOR_SET;
};
pub const SubgroupFeatureFlags = packed struct {
basic: bool = false,
vote: bool = false,
arithmetic: bool = false,
ballot: bool = false,
shuffle: bool = false,
shuffleRelative: bool = false,
clustered: bool = false,
quad: bool = false,
partitionedNV: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const PeerMemoryFeatureFlags = packed struct {
copySrc: bool = false,
copyDst: bool = false,
genericSrc: bool = false,
genericDst: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const copySrcKHR = Self{ .copySrc = true };
pub const copyDstKHR = Self{ .copyDst = true };
pub const genericSrcKHR = Self{ .genericSrc = true };
pub const genericDstKHR = Self{ .genericDst = true };
pub usingnamespace FlagsMixin(Self);
};
pub const MemoryAllocateFlags = packed struct {
deviceMask: bool = false,
deviceAddress: bool = false,
deviceAddressCaptureReplay: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const deviceMaskKHR = Self{ .deviceMask = true };
pub const deviceAddressKHR = Self{ .deviceAddress = true };
pub const deviceAddressCaptureReplayKHR = Self{ .deviceAddressCaptureReplay = true };
pub usingnamespace FlagsMixin(Self);
};
pub const CommandPoolTrimFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const DescriptorUpdateTemplateCreateFlags = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const ExternalMemoryHandleTypeFlags = packed struct {
opaqueFd: bool = false,
opaqueWin32: bool = false,
opaqueWin32Kmt: bool = false,
d3D11Texture: bool = false,
d3D11TextureKmt: bool = false,
d3D12Heap: bool = false,
d3D12Resource: bool = false,
hostAllocationEXT: bool = false,
hostMappedForeignMemoryEXT: bool = false,
dmaBufEXT: bool = false,
androidHardwareBufferANDROID: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const opaqueFdKHR = Self{ .opaqueFd = true };
pub const opaqueWin32KHR = Self{ .opaqueWin32 = true };
pub const opaqueWin32KmtKHR = Self{ .opaqueWin32Kmt = true };
pub const d3D11TextureKHR = Self{ .d3D11Texture = true };
pub const d3D11TextureKmtKHR = Self{ .d3D11TextureKmt = true };
pub const d3D12HeapKHR = Self{ .d3D12Heap = true };
pub const d3D12ResourceKHR = Self{ .d3D12Resource = true };
pub usingnamespace FlagsMixin(Self);
};
pub const ExternalMemoryFeatureFlags = packed struct {
dedicatedOnly: bool = false,
exportable: bool = false,
importable: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const dedicatedOnlyKHR = Self{ .dedicatedOnly = true };
pub const exportableKHR = Self{ .exportable = true };
pub const importableKHR = Self{ .importable = true };
pub usingnamespace FlagsMixin(Self);
};
pub const ExternalFenceHandleTypeFlags = packed struct {
opaqueFd: bool = false,
opaqueWin32: bool = false,
opaqueWin32Kmt: bool = false,
syncFd: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const opaqueFdKHR = Self{ .opaqueFd = true };
pub const opaqueWin32KHR = Self{ .opaqueWin32 = true };
pub const opaqueWin32KmtKHR = Self{ .opaqueWin32Kmt = true };
pub const syncFdKHR = Self{ .syncFd = true };
pub usingnamespace FlagsMixin(Self);
};
pub const ExternalFenceFeatureFlags = packed struct {
exportable: bool = false,
importable: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const exportableKHR = Self{ .exportable = true };
pub const importableKHR = Self{ .importable = true };
pub usingnamespace FlagsMixin(Self);
};
pub const FenceImportFlags = packed struct {
temporary: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const temporaryKHR = Self{ .temporary = true };
pub usingnamespace FlagsMixin(Self);
};
pub const SemaphoreImportFlags = packed struct {
temporary: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const temporaryKHR = Self{ .temporary = true };
pub usingnamespace FlagsMixin(Self);
};
pub const ExternalSemaphoreHandleTypeFlags = packed struct {
opaqueFd: bool = false,
opaqueWin32: bool = false,
opaqueWin32Kmt: bool = false,
d3D12Fence: bool = false,
syncFd: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const opaqueFdKHR = Self{ .opaqueFd = true };
pub const opaqueWin32KHR = Self{ .opaqueWin32 = true };
pub const opaqueWin32KmtKHR = Self{ .opaqueWin32Kmt = true };
pub const d3D12FenceKHR = Self{ .d3D12Fence = true };
pub const syncFdKHR = Self{ .syncFd = true };
pub usingnamespace FlagsMixin(Self);
};
pub const ExternalSemaphoreFeatureFlags = packed struct {
exportable: bool = false,
importable: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const exportableKHR = Self{ .exportable = true };
pub const importableKHR = Self{ .importable = true };
pub usingnamespace FlagsMixin(Self);
};
pub const PhysicalDeviceSubgroupProperties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
pNext: ?*anyopaque = null,
subgroupSize: u32,
supportedStages: ShaderStageFlags align(4),
supportedOperations: SubgroupFeatureFlags align(4),
quadOperationsInAllStages: Bool32,
};
pub const BindBufferMemoryInfo = extern struct {
sType: StructureType = .BIND_BUFFER_MEMORY_INFO,
pNext: ?*const anyopaque = null,
buffer: Buffer,
memory: DeviceMemory,
memoryOffset: DeviceSize,
};
pub const BindImageMemoryInfo = extern struct {
sType: StructureType = .BIND_IMAGE_MEMORY_INFO,
pNext: ?*const anyopaque = null,
image: Image,
memory: DeviceMemory,
memoryOffset: DeviceSize,
};
pub const PhysicalDevice16BitStorageFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
pNext: ?*anyopaque = null,
storageBuffer16BitAccess: Bool32,
uniformAndStorageBuffer16BitAccess: Bool32,
storagePushConstant16: Bool32,
storageInputOutput16: Bool32,
};
pub const MemoryDedicatedRequirements = extern struct {
sType: StructureType = .MEMORY_DEDICATED_REQUIREMENTS,
pNext: ?*anyopaque = null,
prefersDedicatedAllocation: Bool32,
requiresDedicatedAllocation: Bool32,
};
pub const MemoryDedicatedAllocateInfo = extern struct {
sType: StructureType = .MEMORY_DEDICATED_ALLOCATE_INFO,
pNext: ?*const anyopaque = null,
image: Image = Image.Null,
buffer: Buffer = Buffer.Null,
};
pub const MemoryAllocateFlagsInfo = extern struct {
sType: StructureType = .MEMORY_ALLOCATE_FLAGS_INFO,
pNext: ?*const anyopaque = null,
flags: MemoryAllocateFlags align(4) = MemoryAllocateFlags{},
deviceMask: u32,
};
pub const DeviceGroupRenderPassBeginInfo = extern struct {
sType: StructureType = .DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
pNext: ?*const anyopaque = null,
deviceMask: u32,
deviceRenderAreaCount: u32 = 0,
pDeviceRenderAreas: [*]const Rect2D = undefined,
};
pub const DeviceGroupCommandBufferBeginInfo = extern struct {
sType: StructureType = .DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
pNext: ?*const anyopaque = null,
deviceMask: u32,
};
pub const DeviceGroupSubmitInfo = extern struct {
sType: StructureType = .DEVICE_GROUP_SUBMIT_INFO,
pNext: ?*const anyopaque = null,
waitSemaphoreCount: u32 = 0,
pWaitSemaphoreDeviceIndices: [*]const u32 = undefined,
commandBufferCount: u32 = 0,
pCommandBufferDeviceMasks: [*]const u32 = undefined,
signalSemaphoreCount: u32 = 0,
pSignalSemaphoreDeviceIndices: [*]const u32 = undefined,
};
pub const DeviceGroupBindSparseInfo = extern struct {
sType: StructureType = .DEVICE_GROUP_BIND_SPARSE_INFO,
pNext: ?*const anyopaque = null,
resourceDeviceIndex: u32,
memoryDeviceIndex: u32,
};
pub const BindBufferMemoryDeviceGroupInfo = extern struct {
sType: StructureType = .BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
pNext: ?*const anyopaque = null,
deviceIndexCount: u32 = 0,
pDeviceIndices: [*]const u32 = undefined,
};
pub const BindImageMemoryDeviceGroupInfo = extern struct {
sType: StructureType = .BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
pNext: ?*const anyopaque = null,
deviceIndexCount: u32 = 0,
pDeviceIndices: [*]const u32 = undefined,
splitInstanceBindRegionCount: u32 = 0,
pSplitInstanceBindRegions: [*]const Rect2D = undefined,
};
pub const PhysicalDeviceGroupProperties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_GROUP_PROPERTIES,
pNext: ?*anyopaque = null,
physicalDeviceCount: u32,
physicalDevices: [MAX_DEVICE_GROUP_SIZE]PhysicalDevice,
subsetAllocation: Bool32,
};
pub const DeviceGroupDeviceCreateInfo = extern struct {
sType: StructureType = .DEVICE_GROUP_DEVICE_CREATE_INFO,
pNext: ?*const anyopaque = null,
physicalDeviceCount: u32 = 0,
pPhysicalDevices: [*]const PhysicalDevice = undefined,
};
pub const BufferMemoryRequirementsInfo2 = extern struct {
sType: StructureType = .BUFFER_MEMORY_REQUIREMENTS_INFO_2,
pNext: ?*const anyopaque = null,
buffer: Buffer,
};
pub const ImageMemoryRequirementsInfo2 = extern struct {
sType: StructureType = .IMAGE_MEMORY_REQUIREMENTS_INFO_2,
pNext: ?*const anyopaque = null,
image: Image,
};
pub const ImageSparseMemoryRequirementsInfo2 = extern struct {
sType: StructureType = .IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
pNext: ?*const anyopaque = null,
image: Image,
};
pub const MemoryRequirements2 = extern struct {
sType: StructureType = .MEMORY_REQUIREMENTS_2,
pNext: ?*anyopaque = null,
memoryRequirements: MemoryRequirements,
};
pub const MemoryRequirements2KHR = MemoryRequirements2;
pub const SparseImageMemoryRequirements2 = extern struct {
sType: StructureType = .SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
pNext: ?*anyopaque = null,
memoryRequirements: SparseImageMemoryRequirements,
};
pub const PhysicalDeviceFeatures2 = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_FEATURES_2,
pNext: ?*anyopaque = null,
features: PhysicalDeviceFeatures,
};
pub const PhysicalDeviceProperties2 = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_PROPERTIES_2,
pNext: ?*anyopaque = null,
properties: PhysicalDeviceProperties,
};
pub const FormatProperties2 = extern struct {
sType: StructureType = .FORMAT_PROPERTIES_2,
pNext: ?*anyopaque = null,
formatProperties: FormatProperties,
};
pub const ImageFormatProperties2 = extern struct {
sType: StructureType = .IMAGE_FORMAT_PROPERTIES_2,
pNext: ?*anyopaque = null,
imageFormatProperties: ImageFormatProperties,
};
pub const PhysicalDeviceImageFormatInfo2 = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
pNext: ?*const anyopaque = null,
format: Format,
inType: ImageType,
tiling: ImageTiling,
usage: ImageUsageFlags align(4),
flags: ImageCreateFlags align(4) = ImageCreateFlags{},
};
pub const QueueFamilyProperties2 = extern struct {
sType: StructureType = .QUEUE_FAMILY_PROPERTIES_2,
pNext: ?*anyopaque = null,
queueFamilyProperties: QueueFamilyProperties,
};
pub const PhysicalDeviceMemoryProperties2 = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
pNext: ?*anyopaque = null,
memoryProperties: PhysicalDeviceMemoryProperties,
};
pub const SparseImageFormatProperties2 = extern struct {
sType: StructureType = .SPARSE_IMAGE_FORMAT_PROPERTIES_2,
pNext: ?*anyopaque = null,
properties: SparseImageFormatProperties,
};
pub const PhysicalDeviceSparseImageFormatInfo2 = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
pNext: ?*const anyopaque = null,
format: Format,
inType: ImageType,
samples: SampleCountFlags align(4),
usage: ImageUsageFlags align(4),
tiling: ImageTiling,
};
pub const PhysicalDevicePointClippingProperties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
pNext: ?*anyopaque = null,
pointClippingBehavior: PointClippingBehavior,
};
pub const InputAttachmentAspectReference = extern struct {
subpass: u32,
inputAttachmentIndex: u32,
aspectMask: ImageAspectFlags align(4),
};
pub const RenderPassInputAttachmentAspectCreateInfo = extern struct {
sType: StructureType = .RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
pNext: ?*const anyopaque = null,
aspectReferenceCount: u32,
pAspectReferences: [*]const InputAttachmentAspectReference,
};
pub const ImageViewUsageCreateInfo = extern struct {
sType: StructureType = .IMAGE_VIEW_USAGE_CREATE_INFO,
pNext: ?*const anyopaque = null,
usage: ImageUsageFlags align(4),
};
pub const PipelineTessellationDomainOriginStateCreateInfo = extern struct {
sType: StructureType = .PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
pNext: ?*const anyopaque = null,
domainOrigin: TessellationDomainOrigin,
};
pub const RenderPassMultiviewCreateInfo = extern struct {
sType: StructureType = .RENDER_PASS_MULTIVIEW_CREATE_INFO,
pNext: ?*const anyopaque = null,
subpassCount: u32 = 0,
pViewMasks: [*]const u32 = undefined,
dependencyCount: u32 = 0,
pViewOffsets: [*]const i32 = undefined,
correlationMaskCount: u32 = 0,
pCorrelationMasks: [*]const u32 = undefined,
};
pub const PhysicalDeviceMultiviewFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
pNext: ?*anyopaque = null,
multiview: Bool32,
multiviewGeometryShader: Bool32,
multiviewTessellationShader: Bool32,
};
pub const PhysicalDeviceMultiviewProperties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
pNext: ?*anyopaque = null,
maxMultiviewViewCount: u32,
maxMultiviewInstanceIndex: u32,
};
pub const PhysicalDeviceVariablePointersFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
pNext: ?*anyopaque = null,
variablePointersStorageBuffer: Bool32,
variablePointers: Bool32,
};
pub const PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures;
pub const PhysicalDeviceProtectedMemoryFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
pNext: ?*anyopaque = null,
protectedMemory: Bool32,
};
pub const PhysicalDeviceProtectedMemoryProperties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
pNext: ?*anyopaque = null,
protectedNoFault: Bool32,
};
pub const DeviceQueueInfo2 = extern struct {
sType: StructureType = .DEVICE_QUEUE_INFO_2,
pNext: ?*const anyopaque = null,
flags: DeviceQueueCreateFlags align(4) = DeviceQueueCreateFlags{},
queueFamilyIndex: u32,
queueIndex: u32,
};
pub const ProtectedSubmitInfo = extern struct {
sType: StructureType = .PROTECTED_SUBMIT_INFO,
pNext: ?*const anyopaque = null,
protectedSubmit: Bool32,
};
pub const SamplerYcbcrConversionCreateInfo = extern struct {
sType: StructureType = .SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
pNext: ?*const anyopaque = null,
format: Format,
ycbcrModel: SamplerYcbcrModelConversion,
ycbcrRange: SamplerYcbcrRange,
components: ComponentMapping,
xChromaOffset: ChromaLocation,
yChromaOffset: ChromaLocation,
chromaFilter: Filter,
forceExplicitReconstruction: Bool32,
};
pub const SamplerYcbcrConversionInfo = extern struct {
sType: StructureType = .SAMPLER_YCBCR_CONVERSION_INFO,
pNext: ?*const anyopaque = null,
conversion: SamplerYcbcrConversion,
};
pub const BindImagePlaneMemoryInfo = extern struct {
sType: StructureType = .BIND_IMAGE_PLANE_MEMORY_INFO,
pNext: ?*const anyopaque = null,
planeAspect: ImageAspectFlags align(4),
};
pub const ImagePlaneMemoryRequirementsInfo = extern struct {
sType: StructureType = .IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
pNext: ?*const anyopaque = null,
planeAspect: ImageAspectFlags align(4),
};
pub const PhysicalDeviceSamplerYcbcrConversionFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
pNext: ?*anyopaque = null,
samplerYcbcrConversion: Bool32,
};
pub const SamplerYcbcrConversionImageFormatProperties = extern struct {
sType: StructureType = .SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
pNext: ?*anyopaque = null,
combinedImageSamplerDescriptorCount: u32,
};
pub const DescriptorUpdateTemplateEntry = extern struct {
dstBinding: u32,
dstArrayElement: u32,
descriptorCount: u32,
descriptorType: DescriptorType,
offset: usize,
stride: usize,
};
pub const DescriptorUpdateTemplateCreateInfo = extern struct {
sType: StructureType = .DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
pNext: ?*const anyopaque = null,
flags: DescriptorUpdateTemplateCreateFlags align(4) = DescriptorUpdateTemplateCreateFlags{},
descriptorUpdateEntryCount: u32,
pDescriptorUpdateEntries: [*]const DescriptorUpdateTemplateEntry,
templateType: DescriptorUpdateTemplateType,
descriptorSetLayout: DescriptorSetLayout,
pipelineBindPoint: PipelineBindPoint,
pipelineLayout: PipelineLayout,
set: u32,
};
pub const ExternalMemoryProperties = extern struct {
externalMemoryFeatures: ExternalMemoryFeatureFlags align(4),
exportFromImportedHandleTypes: ExternalMemoryHandleTypeFlags align(4) = ExternalMemoryHandleTypeFlags{},
compatibleHandleTypes: ExternalMemoryHandleTypeFlags align(4),
};
pub const PhysicalDeviceExternalImageFormatInfo = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
pNext: ?*const anyopaque = null,
handleType: ExternalMemoryHandleTypeFlags align(4) = ExternalMemoryHandleTypeFlags{},
};
pub const ExternalImageFormatProperties = extern struct {
sType: StructureType = .EXTERNAL_IMAGE_FORMAT_PROPERTIES,
pNext: ?*anyopaque = null,
externalMemoryProperties: ExternalMemoryProperties,
};
pub const PhysicalDeviceExternalBufferInfo = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
pNext: ?*const anyopaque = null,
flags: BufferCreateFlags align(4) = BufferCreateFlags{},
usage: BufferUsageFlags align(4),
handleType: ExternalMemoryHandleTypeFlags align(4),
};
pub const ExternalBufferProperties = extern struct {
sType: StructureType = .EXTERNAL_BUFFER_PROPERTIES,
pNext: ?*anyopaque = null,
externalMemoryProperties: ExternalMemoryProperties,
};
pub const PhysicalDeviceIDProperties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_ID_PROPERTIES,
pNext: ?*anyopaque = null,
deviceUUID: [UUID_SIZE]u8,
driverUUID: [UUID_SIZE]u8,
deviceLUID: [LUID_SIZE]u8,
deviceNodeMask: u32,
deviceLUIDValid: Bool32,
};
pub const ExternalMemoryImageCreateInfo = extern struct {
sType: StructureType = .EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
pNext: ?*const anyopaque = null,
handleTypes: ExternalMemoryHandleTypeFlags align(4),
};
pub const ExternalMemoryBufferCreateInfo = extern struct {
sType: StructureType = .EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
pNext: ?*const anyopaque = null,
handleTypes: ExternalMemoryHandleTypeFlags align(4) = ExternalMemoryHandleTypeFlags{},
};
pub const ExportMemoryAllocateInfo = extern struct {
sType: StructureType = .EXPORT_MEMORY_ALLOCATE_INFO,
pNext: ?*const anyopaque = null,
handleTypes: ExternalMemoryHandleTypeFlags align(4) = ExternalMemoryHandleTypeFlags{},
};
pub const PhysicalDeviceExternalFenceInfo = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
pNext: ?*const anyopaque = null,
handleType: ExternalFenceHandleTypeFlags align(4),
};
pub const ExternalFenceProperties = extern struct {
sType: StructureType = .EXTERNAL_FENCE_PROPERTIES,
pNext: ?*anyopaque = null,
exportFromImportedHandleTypes: ExternalFenceHandleTypeFlags align(4),
compatibleHandleTypes: ExternalFenceHandleTypeFlags align(4),
externalFenceFeatures: ExternalFenceFeatureFlags align(4) = ExternalFenceFeatureFlags{},
};
pub const ExportFenceCreateInfo = extern struct {
sType: StructureType = .EXPORT_FENCE_CREATE_INFO,
pNext: ?*const anyopaque = null,
handleTypes: ExternalFenceHandleTypeFlags align(4) = ExternalFenceHandleTypeFlags{},
};
pub const ExportSemaphoreCreateInfo = extern struct {
sType: StructureType = .EXPORT_SEMAPHORE_CREATE_INFO,
pNext: ?*const anyopaque = null,
handleTypes: ExternalSemaphoreHandleTypeFlags align(4) = ExternalSemaphoreHandleTypeFlags{},
};
pub const PhysicalDeviceExternalSemaphoreInfo = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
pNext: ?*const anyopaque = null,
handleType: ExternalSemaphoreHandleTypeFlags align(4),
};
pub const ExternalSemaphoreProperties = extern struct {
sType: StructureType = .EXTERNAL_SEMAPHORE_PROPERTIES,
pNext: ?*anyopaque = null,
exportFromImportedHandleTypes: ExternalSemaphoreHandleTypeFlags align(4),
compatibleHandleTypes: ExternalSemaphoreHandleTypeFlags align(4),
externalSemaphoreFeatures: ExternalSemaphoreFeatureFlags align(4) = ExternalSemaphoreFeatureFlags{},
};
pub const PhysicalDeviceMaintenance3Properties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
pNext: ?*anyopaque = null,
maxPerSetDescriptors: u32,
maxMemoryAllocationSize: DeviceSize,
};
pub const DescriptorSetLayoutSupport = extern struct {
sType: StructureType = .DESCRIPTOR_SET_LAYOUT_SUPPORT,
pNext: ?*anyopaque = null,
supported: Bool32,
};
pub const PhysicalDeviceShaderDrawParametersFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
pNext: ?*anyopaque = null,
shaderDrawParameters: Bool32,
};
pub const PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
pub extern fn vkEnumerateInstanceVersion(pApiVersion: *u32) callconv(CallConv) Result;
pub extern fn vkBindBufferMemory2(
device: Device,
bindInfoCount: u32,
pBindInfos: [*]const BindBufferMemoryInfo,
) callconv(CallConv) Result;
pub extern fn vkBindImageMemory2(
device: Device,
bindInfoCount: u32,
pBindInfos: [*]const BindImageMemoryInfo,
) callconv(CallConv) Result;
pub extern fn vkGetDeviceGroupPeerMemoryFeatures(
device: Device,
heapIndex: u32,
localDeviceIndex: u32,
remoteDeviceIndex: u32,
pPeerMemoryFeatures: *align(4) PeerMemoryFeatureFlags,
) callconv(CallConv) void;
pub extern fn vkCmdSetDeviceMask(
commandBuffer: CommandBuffer,
deviceMask: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDispatchBase(
commandBuffer: CommandBuffer,
baseGroupX: u32,
baseGroupY: u32,
baseGroupZ: u32,
groupCountX: u32,
groupCountY: u32,
groupCountZ: u32,
) callconv(CallConv) void;
pub extern fn vkEnumeratePhysicalDeviceGroups(
instance: Instance,
pPhysicalDeviceGroupCount: *u32,
pPhysicalDeviceGroupProperties: ?[*]PhysicalDeviceGroupProperties,
) callconv(CallConv) Result;
pub extern fn vkGetImageMemoryRequirements2(
device: Device,
pInfo: *const ImageMemoryRequirementsInfo2,
pMemoryRequirements: *MemoryRequirements2,
) callconv(CallConv) void;
pub extern fn vkGetBufferMemoryRequirements2(
device: Device,
pInfo: *const BufferMemoryRequirementsInfo2,
pMemoryRequirements: *MemoryRequirements2,
) callconv(CallConv) void;
pub extern fn vkGetImageSparseMemoryRequirements2(
device: Device,
pInfo: *const ImageSparseMemoryRequirementsInfo2,
pSparseMemoryRequirementCount: *u32,
pSparseMemoryRequirements: ?[*]SparseImageMemoryRequirements2,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceFeatures2(
physicalDevice: PhysicalDevice,
pFeatures: *PhysicalDeviceFeatures2,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceProperties2(
physicalDevice: PhysicalDevice,
pProperties: *PhysicalDeviceProperties2,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceFormatProperties2(
physicalDevice: PhysicalDevice,
format: Format,
pFormatProperties: *FormatProperties2,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceImageFormatProperties2(
physicalDevice: PhysicalDevice,
pImageFormatInfo: *const PhysicalDeviceImageFormatInfo2,
pImageFormatProperties: *ImageFormatProperties2,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDeviceQueueFamilyProperties2(
physicalDevice: PhysicalDevice,
pQueueFamilyPropertyCount: *u32,
pQueueFamilyProperties: ?[*]QueueFamilyProperties2,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceMemoryProperties2(
physicalDevice: PhysicalDevice,
pMemoryProperties: *PhysicalDeviceMemoryProperties2,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceSparseImageFormatProperties2(
physicalDevice: PhysicalDevice,
pFormatInfo: *const PhysicalDeviceSparseImageFormatInfo2,
pPropertyCount: *u32,
pProperties: ?[*]SparseImageFormatProperties2,
) callconv(CallConv) void;
pub extern fn vkTrimCommandPool(
device: Device,
commandPool: CommandPool,
flags: CommandPoolTrimFlags.IntType,
) callconv(CallConv) void;
pub extern fn vkGetDeviceQueue2(
device: Device,
pQueueInfo: *const DeviceQueueInfo2,
pQueue: *Queue,
) callconv(CallConv) void;
pub extern fn vkCreateSamplerYcbcrConversion(
device: Device,
pCreateInfo: *const SamplerYcbcrConversionCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pYcbcrConversion: *SamplerYcbcrConversion,
) callconv(CallConv) Result;
pub extern fn vkDestroySamplerYcbcrConversion(
device: Device,
ycbcrConversion: SamplerYcbcrConversion,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkCreateDescriptorUpdateTemplate(
device: Device,
pCreateInfo: *const DescriptorUpdateTemplateCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pDescriptorUpdateTemplate: *DescriptorUpdateTemplate,
) callconv(CallConv) Result;
pub extern fn vkDestroyDescriptorUpdateTemplate(
device: Device,
descriptorUpdateTemplate: DescriptorUpdateTemplate,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkUpdateDescriptorSetWithTemplate(
device: Device,
descriptorSet: DescriptorSet,
descriptorUpdateTemplate: DescriptorUpdateTemplate,
pData: ?*const anyopaque,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceExternalBufferProperties(
physicalDevice: PhysicalDevice,
pExternalBufferInfo: *const PhysicalDeviceExternalBufferInfo,
pExternalBufferProperties: *ExternalBufferProperties,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceExternalFenceProperties(
physicalDevice: PhysicalDevice,
pExternalFenceInfo: *const PhysicalDeviceExternalFenceInfo,
pExternalFenceProperties: *ExternalFenceProperties,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceExternalSemaphoreProperties(
physicalDevice: PhysicalDevice,
pExternalSemaphoreInfo: *const PhysicalDeviceExternalSemaphoreInfo,
pExternalSemaphoreProperties: *ExternalSemaphoreProperties,
) callconv(CallConv) void;
pub extern fn vkGetDescriptorSetLayoutSupport(
device: Device,
pCreateInfo: *const DescriptorSetLayoutCreateInfo,
pSupport: *DescriptorSetLayoutSupport,
) callconv(CallConv) void;
pub inline fn EnumerateInstanceVersion() error{VK_UNDOCUMENTED_ERROR}!u32 {
var out_apiVersion: u32 = undefined;
const result = vkEnumerateInstanceVersion(&out_apiVersion);
if (@bitCast(c_int, result) < 0) {
return error.VK_UNDOCUMENTED_ERROR;
}
return out_apiVersion;
}
pub inline fn BindBufferMemory2(device: Device, bindInfos: []const BindBufferMemoryInfo) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INVALID_OPAQUE_CAPTURE_ADDRESS,VK_UNDOCUMENTED_ERROR}!void {
const result = vkBindBufferMemory2(device, @intCast(u32, bindInfos.len), bindInfos.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS => error.VK_INVALID_OPAQUE_CAPTURE_ADDRESS,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn BindImageMemory2(device: Device, bindInfos: []const BindImageMemoryInfo) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkBindImageMemory2(device, @intCast(u32, bindInfos.len), bindInfos.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn GetDeviceGroupPeerMemoryFeatures(device: Device, heapIndex: u32, localDeviceIndex: u32, remoteDeviceIndex: u32) PeerMemoryFeatureFlags {
var out_peerMemoryFeatures: PeerMemoryFeatureFlags align(4) = undefined;
vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, &out_peerMemoryFeatures);
return out_peerMemoryFeatures;
}
pub const CmdSetDeviceMask = vkCmdSetDeviceMask;
pub const CmdDispatchBase = vkCmdDispatchBase;
pub const EnumeratePhysicalDeviceGroupsResult = struct {
result: Result,
physicalDeviceGroupProperties: []PhysicalDeviceGroupProperties,
};
pub inline fn EnumeratePhysicalDeviceGroups(instance: Instance, physicalDeviceGroupProperties: []PhysicalDeviceGroupProperties) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INITIALIZATION_FAILED,VK_UNDOCUMENTED_ERROR}!EnumeratePhysicalDeviceGroupsResult {
var returnValues: EnumeratePhysicalDeviceGroupsResult = undefined;
var physicalDeviceGroupCount: u32 = @intCast(u32, physicalDeviceGroupProperties.len);
const result = vkEnumeratePhysicalDeviceGroups(instance, &physicalDeviceGroupCount, physicalDeviceGroupProperties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INITIALIZATION_FAILED => error.VK_INITIALIZATION_FAILED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.physicalDeviceGroupProperties = physicalDeviceGroupProperties[0..physicalDeviceGroupCount];
returnValues.result = result;
return returnValues;
}
pub inline fn EnumeratePhysicalDeviceGroupsCount(instance: Instance) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INITIALIZATION_FAILED,VK_UNDOCUMENTED_ERROR}!u32 {
var out_physicalDeviceGroupCount: u32 = undefined;
const result = vkEnumeratePhysicalDeviceGroups(instance, &out_physicalDeviceGroupCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INITIALIZATION_FAILED => error.VK_INITIALIZATION_FAILED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_physicalDeviceGroupCount;
}
pub inline fn GetImageMemoryRequirements2(device: Device, info: ImageMemoryRequirementsInfo2) MemoryRequirements2 {
var out_memoryRequirements: MemoryRequirements2 = undefined;
vkGetImageMemoryRequirements2(device, &info, &out_memoryRequirements);
return out_memoryRequirements;
}
pub inline fn GetBufferMemoryRequirements2(device: Device, info: BufferMemoryRequirementsInfo2) MemoryRequirements2 {
var out_memoryRequirements: MemoryRequirements2 = undefined;
vkGetBufferMemoryRequirements2(device, &info, &out_memoryRequirements);
return out_memoryRequirements;
}
pub inline fn GetImageSparseMemoryRequirements2(device: Device, info: ImageSparseMemoryRequirementsInfo2, sparseMemoryRequirements: []SparseImageMemoryRequirements2) []SparseImageMemoryRequirements2 {
var out_sparseMemoryRequirements: []SparseImageMemoryRequirements2 = undefined;
var sparseMemoryRequirementCount: u32 = @intCast(u32, sparseMemoryRequirements.len);
vkGetImageSparseMemoryRequirements2(device, &info, &sparseMemoryRequirementCount, sparseMemoryRequirements.ptr);
out_sparseMemoryRequirements = sparseMemoryRequirements[0..sparseMemoryRequirementCount];
return out_sparseMemoryRequirements;
}
pub inline fn GetImageSparseMemoryRequirements2Count(device: Device, info: ImageSparseMemoryRequirementsInfo2) u32 {
var out_sparseMemoryRequirementCount: u32 = undefined;
vkGetImageSparseMemoryRequirements2(device, &info, &out_sparseMemoryRequirementCount, null);
return out_sparseMemoryRequirementCount;
}
pub inline fn GetPhysicalDeviceFeatures2(physicalDevice: PhysicalDevice) PhysicalDeviceFeatures2 {
var out_features: PhysicalDeviceFeatures2 = undefined;
vkGetPhysicalDeviceFeatures2(physicalDevice, &out_features);
return out_features;
}
pub inline fn GetPhysicalDeviceProperties2(physicalDevice: PhysicalDevice) PhysicalDeviceProperties2 {
var out_properties: PhysicalDeviceProperties2 = undefined;
vkGetPhysicalDeviceProperties2(physicalDevice, &out_properties);
return out_properties;
}
pub inline fn GetPhysicalDeviceFormatProperties2(physicalDevice: PhysicalDevice, format: Format) FormatProperties2 {
var out_formatProperties: FormatProperties2 = undefined;
vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, &out_formatProperties);
return out_formatProperties;
}
pub inline fn GetPhysicalDeviceImageFormatProperties2(physicalDevice: PhysicalDevice, imageFormatInfo: PhysicalDeviceImageFormatInfo2) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_FORMAT_NOT_SUPPORTED,VK_UNDOCUMENTED_ERROR}!ImageFormatProperties2 {
var out_imageFormatProperties: ImageFormatProperties2 = undefined;
const result = vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, &imageFormatInfo, &out_imageFormatProperties);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_FORMAT_NOT_SUPPORTED => error.VK_FORMAT_NOT_SUPPORTED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_imageFormatProperties;
}
pub inline fn GetPhysicalDeviceQueueFamilyProperties2(physicalDevice: PhysicalDevice, queueFamilyProperties: []QueueFamilyProperties2) []QueueFamilyProperties2 {
var out_queueFamilyProperties: []QueueFamilyProperties2 = undefined;
var queueFamilyPropertyCount: u32 = @intCast(u32, queueFamilyProperties.len);
vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, &queueFamilyPropertyCount, queueFamilyProperties.ptr);
out_queueFamilyProperties = queueFamilyProperties[0..queueFamilyPropertyCount];
return out_queueFamilyProperties;
}
pub inline fn GetPhysicalDeviceQueueFamilyProperties2Count(physicalDevice: PhysicalDevice) u32 {
var out_queueFamilyPropertyCount: u32 = undefined;
vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, &out_queueFamilyPropertyCount, null);
return out_queueFamilyPropertyCount;
}
pub inline fn GetPhysicalDeviceMemoryProperties2(physicalDevice: PhysicalDevice) PhysicalDeviceMemoryProperties2 {
var out_memoryProperties: PhysicalDeviceMemoryProperties2 = undefined;
vkGetPhysicalDeviceMemoryProperties2(physicalDevice, &out_memoryProperties);
return out_memoryProperties;
}
pub inline fn GetPhysicalDeviceSparseImageFormatProperties2(physicalDevice: PhysicalDevice, formatInfo: PhysicalDeviceSparseImageFormatInfo2, properties: []SparseImageFormatProperties2) []SparseImageFormatProperties2 {
var out_properties: []SparseImageFormatProperties2 = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, &formatInfo, &propertyCount, properties.ptr);
out_properties = properties[0..propertyCount];
return out_properties;
}
pub inline fn GetPhysicalDeviceSparseImageFormatProperties2Count(physicalDevice: PhysicalDevice, formatInfo: PhysicalDeviceSparseImageFormatInfo2) u32 {
var out_propertyCount: u32 = undefined;
vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, &formatInfo, &out_propertyCount, null);
return out_propertyCount;
}
pub inline fn TrimCommandPool(device: Device, commandPool: CommandPool, flags: CommandPoolTrimFlags) void {
vkTrimCommandPool(device, commandPool, flags.toInt());
}
pub inline fn GetDeviceQueue2(device: Device, queueInfo: DeviceQueueInfo2) Queue {
var out_queue: Queue = undefined;
vkGetDeviceQueue2(device, &queueInfo, &out_queue);
return out_queue;
}
pub inline fn CreateSamplerYcbcrConversion(device: Device, createInfo: SamplerYcbcrConversionCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!SamplerYcbcrConversion {
var out_ycbcrConversion: SamplerYcbcrConversion = undefined;
const result = vkCreateSamplerYcbcrConversion(device, &createInfo, pAllocator, &out_ycbcrConversion);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_ycbcrConversion;
}
pub const DestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversion;
pub inline fn CreateDescriptorUpdateTemplate(device: Device, createInfo: DescriptorUpdateTemplateCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!DescriptorUpdateTemplate {
var out_descriptorUpdateTemplate: DescriptorUpdateTemplate = undefined;
const result = vkCreateDescriptorUpdateTemplate(device, &createInfo, pAllocator, &out_descriptorUpdateTemplate);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_descriptorUpdateTemplate;
}
pub const DestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplate;
pub const UpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplate;
pub inline fn GetPhysicalDeviceExternalBufferProperties(physicalDevice: PhysicalDevice, externalBufferInfo: PhysicalDeviceExternalBufferInfo) ExternalBufferProperties {
var out_externalBufferProperties: ExternalBufferProperties = undefined;
vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, &externalBufferInfo, &out_externalBufferProperties);
return out_externalBufferProperties;
}
pub inline fn GetPhysicalDeviceExternalFenceProperties(physicalDevice: PhysicalDevice, externalFenceInfo: PhysicalDeviceExternalFenceInfo) ExternalFenceProperties {
var out_externalFenceProperties: ExternalFenceProperties = undefined;
vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, &externalFenceInfo, &out_externalFenceProperties);
return out_externalFenceProperties;
}
pub inline fn GetPhysicalDeviceExternalSemaphoreProperties(physicalDevice: PhysicalDevice, externalSemaphoreInfo: PhysicalDeviceExternalSemaphoreInfo) ExternalSemaphoreProperties {
var out_externalSemaphoreProperties: ExternalSemaphoreProperties = undefined;
vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, &externalSemaphoreInfo, &out_externalSemaphoreProperties);
return out_externalSemaphoreProperties;
}
pub inline fn GetDescriptorSetLayoutSupport(device: Device, createInfo: DescriptorSetLayoutCreateInfo) DescriptorSetLayoutSupport {
var out_support: DescriptorSetLayoutSupport = undefined;
vkGetDescriptorSetLayoutSupport(device, &createInfo, &out_support);
return out_support;
}
pub const VERSION_1_2 = 1;
// Vulkan 1.2 version number
pub const API_VERSION_1_2 = MAKE_VERSION(1, 2, 0);// Patch version should always be set to 0
pub const DeviceAddress = u64;
pub const MAX_DRIVER_NAME_SIZE = 256;
pub const MAX_DRIVER_INFO_SIZE = 256;
pub const DriverId = enum(i32) {
AMD_PROPRIETARY = 1,
AMD_OPEN_SOURCE = 2,
MESA_RADV = 3,
NVIDIA_PROPRIETARY = 4,
INTEL_PROPRIETARY_WINDOWS = 5,
INTEL_OPEN_SOURCE_MESA = 6,
IMAGINATION_PROPRIETARY = 7,
QUALCOMM_PROPRIETARY = 8,
ARM_PROPRIETARY = 9,
GOOGLE_SWIFTSHADER = 10,
GGP_PROPRIETARY = 11,
BROADCOM_PROPRIETARY = 12,
_,
const Self = @This();
pub const AMD_PROPRIETARY_KHR = Self.AMD_PROPRIETARY;
pub const AMD_OPEN_SOURCE_KHR = Self.AMD_OPEN_SOURCE;
pub const MESA_RADV_KHR = Self.MESA_RADV;
pub const NVIDIA_PROPRIETARY_KHR = Self.NVIDIA_PROPRIETARY;
pub const INTEL_PROPRIETARY_WINDOWS_KHR = Self.INTEL_PROPRIETARY_WINDOWS;
pub const INTEL_OPEN_SOURCE_MESA_KHR = Self.INTEL_OPEN_SOURCE_MESA;
pub const IMAGINATION_PROPRIETARY_KHR = Self.IMAGINATION_PROPRIETARY;
pub const QUALCOMM_PROPRIETARY_KHR = Self.QUALCOMM_PROPRIETARY;
pub const ARM_PROPRIETARY_KHR = Self.ARM_PROPRIETARY;
pub const GOOGLE_SWIFTSHADER_KHR = Self.GOOGLE_SWIFTSHADER;
pub const GGP_PROPRIETARY_KHR = Self.GGP_PROPRIETARY;
pub const BROADCOM_PROPRIETARY_KHR = Self.BROADCOM_PROPRIETARY;
};
pub const ShaderFloatControlsIndependence = enum(i32) {
T_32_BIT_ONLY = 0,
ALL = 1,
NONE = 2,
_,
const Self = @This();
pub const T_32_BIT_ONLY_KHR = Self.T_32_BIT_ONLY;
pub const ALL_KHR = Self.ALL;
pub const NONE_KHR = Self.NONE;
};
pub const SamplerReductionMode = enum(i32) {
WEIGHTED_AVERAGE = 0,
MIN = 1,
MAX = 2,
_,
const Self = @This();
pub const WEIGHTED_AVERAGE_EXT = Self.WEIGHTED_AVERAGE;
pub const MIN_EXT = Self.MIN;
pub const MAX_EXT = Self.MAX;
};
pub const SemaphoreType = enum(i32) {
BINARY = 0,
TIMELINE = 1,
_,
const Self = @This();
pub const BINARY_KHR = Self.BINARY;
pub const TIMELINE_KHR = Self.TIMELINE;
};
pub const ResolveModeFlags = packed struct {
sampleZero: bool = false,
average: bool = false,
min: bool = false,
max: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const none = Self.fromInt(0);
pub const noneKhr = Self{ .none = true };
pub const sampleZeroKHR = Self{ .sampleZero = true };
pub const averageKHR = Self{ .average = true };
pub const minKHR = Self{ .min = true };
pub const maxKHR = Self{ .max = true };
pub usingnamespace FlagsMixin(Self);
};
pub const DescriptorBindingFlags = packed struct {
updateAfterBind: bool = false,
updateUnusedWhilePending: bool = false,
partiallyBound: bool = false,
variableDescriptorCount: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const updateAfterBindEXT = Self{ .updateAfterBind = true };
pub const updateUnusedWhilePendingEXT = Self{ .updateUnusedWhilePending = true };
pub const partiallyBoundEXT = Self{ .partiallyBound = true };
pub const variableDescriptorCountEXT = Self{ .variableDescriptorCount = true };
pub usingnamespace FlagsMixin(Self);
};
pub const SemaphoreWaitFlags = packed struct {
any: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
const Self = @This();
pub const anyKHR = Self{ .any = true };
pub usingnamespace FlagsMixin(Self);
};
pub const PhysicalDeviceVulkan11Features = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
pNext: ?*anyopaque = null,
storageBuffer16BitAccess: Bool32,
uniformAndStorageBuffer16BitAccess: Bool32,
storagePushConstant16: Bool32,
storageInputOutput16: Bool32,
multiview: Bool32,
multiviewGeometryShader: Bool32,
multiviewTessellationShader: Bool32,
variablePointersStorageBuffer: Bool32,
variablePointers: Bool32,
protectedMemory: Bool32,
samplerYcbcrConversion: Bool32,
shaderDrawParameters: Bool32,
};
pub const PhysicalDeviceVulkan11Properties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,
pNext: ?*anyopaque = null,
deviceUUID: [UUID_SIZE]u8,
driverUUID: [UUID_SIZE]u8,
deviceLUID: [LUID_SIZE]u8,
deviceNodeMask: u32,
deviceLUIDValid: Bool32,
subgroupSize: u32,
subgroupSupportedStages: ShaderStageFlags align(4),
subgroupSupportedOperations: SubgroupFeatureFlags align(4),
subgroupQuadOperationsInAllStages: Bool32,
pointClippingBehavior: PointClippingBehavior,
maxMultiviewViewCount: u32,
maxMultiviewInstanceIndex: u32,
protectedNoFault: Bool32,
maxPerSetDescriptors: u32,
maxMemoryAllocationSize: DeviceSize,
};
pub const PhysicalDeviceVulkan12Features = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
pNext: ?*anyopaque = null,
samplerMirrorClampToEdge: Bool32,
drawIndirectCount: Bool32,
storageBuffer8BitAccess: Bool32,
uniformAndStorageBuffer8BitAccess: Bool32,
storagePushConstant8: Bool32,
shaderBufferInt64Atomics: Bool32,
shaderSharedInt64Atomics: Bool32,
shaderFloat16: Bool32,
shaderInt8: Bool32,
descriptorIndexing: Bool32,
shaderInputAttachmentArrayDynamicIndexing: Bool32,
shaderUniformTexelBufferArrayDynamicIndexing: Bool32,
shaderStorageTexelBufferArrayDynamicIndexing: Bool32,
shaderUniformBufferArrayNonUniformIndexing: Bool32,
shaderSampledImageArrayNonUniformIndexing: Bool32,
shaderStorageBufferArrayNonUniformIndexing: Bool32,
shaderStorageImageArrayNonUniformIndexing: Bool32,
shaderInputAttachmentArrayNonUniformIndexing: Bool32,
shaderUniformTexelBufferArrayNonUniformIndexing: Bool32,
shaderStorageTexelBufferArrayNonUniformIndexing: Bool32,
descriptorBindingUniformBufferUpdateAfterBind: Bool32,
descriptorBindingSampledImageUpdateAfterBind: Bool32,
descriptorBindingStorageImageUpdateAfterBind: Bool32,
descriptorBindingStorageBufferUpdateAfterBind: Bool32,
descriptorBindingUniformTexelBufferUpdateAfterBind: Bool32,
descriptorBindingStorageTexelBufferUpdateAfterBind: Bool32,
descriptorBindingUpdateUnusedWhilePending: Bool32,
descriptorBindingPartiallyBound: Bool32,
descriptorBindingVariableDescriptorCount: Bool32,
runtimeDescriptorArray: Bool32,
samplerFilterMinmax: Bool32,
scalarBlockLayout: Bool32,
imagelessFramebuffer: Bool32,
uniformBufferStandardLayout: Bool32,
shaderSubgroupExtendedTypes: Bool32,
separateDepthStencilLayouts: Bool32,
hostQueryReset: Bool32,
timelineSemaphore: Bool32,
bufferDeviceAddress: Bool32,
bufferDeviceAddressCaptureReplay: Bool32,
bufferDeviceAddressMultiDevice: Bool32,
vulkanMemoryModel: Bool32,
vulkanMemoryModelDeviceScope: Bool32,
vulkanMemoryModelAvailabilityVisibilityChains: Bool32,
shaderOutputViewportIndex: Bool32,
shaderOutputLayer: Bool32,
subgroupBroadcastDynamicId: Bool32,
};
pub const ConformanceVersion = extern struct {
major: u8,
minor: u8,
subminor: u8,
patch: u8,
};
pub const PhysicalDeviceVulkan12Properties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,
pNext: ?*anyopaque = null,
driverID: DriverId,
driverName: [MAX_DRIVER_NAME_SIZE-1:0]u8,
driverInfo: [MAX_DRIVER_INFO_SIZE-1:0]u8,
conformanceVersion: ConformanceVersion,
denormBehaviorIndependence: ShaderFloatControlsIndependence,
roundingModeIndependence: ShaderFloatControlsIndependence,
shaderSignedZeroInfNanPreserveFloat16: Bool32,
shaderSignedZeroInfNanPreserveFloat32: Bool32,
shaderSignedZeroInfNanPreserveFloat64: Bool32,
shaderDenormPreserveFloat16: Bool32,
shaderDenormPreserveFloat32: Bool32,
shaderDenormPreserveFloat64: Bool32,
shaderDenormFlushToZeroFloat16: Bool32,
shaderDenormFlushToZeroFloat32: Bool32,
shaderDenormFlushToZeroFloat64: Bool32,
shaderRoundingModeRTEFloat16: Bool32,
shaderRoundingModeRTEFloat32: Bool32,
shaderRoundingModeRTEFloat64: Bool32,
shaderRoundingModeRTZFloat16: Bool32,
shaderRoundingModeRTZFloat32: Bool32,
shaderRoundingModeRTZFloat64: Bool32,
maxUpdateAfterBindDescriptorsInAllPools: u32,
shaderUniformBufferArrayNonUniformIndexingNative: Bool32,
shaderSampledImageArrayNonUniformIndexingNative: Bool32,
shaderStorageBufferArrayNonUniformIndexingNative: Bool32,
shaderStorageImageArrayNonUniformIndexingNative: Bool32,
shaderInputAttachmentArrayNonUniformIndexingNative: Bool32,
robustBufferAccessUpdateAfterBind: Bool32,
quadDivergentImplicitLod: Bool32,
maxPerStageDescriptorUpdateAfterBindSamplers: u32,
maxPerStageDescriptorUpdateAfterBindUniformBuffers: u32,
maxPerStageDescriptorUpdateAfterBindStorageBuffers: u32,
maxPerStageDescriptorUpdateAfterBindSampledImages: u32,
maxPerStageDescriptorUpdateAfterBindStorageImages: u32,
maxPerStageDescriptorUpdateAfterBindInputAttachments: u32,
maxPerStageUpdateAfterBindResources: u32,
maxDescriptorSetUpdateAfterBindSamplers: u32,
maxDescriptorSetUpdateAfterBindUniformBuffers: u32,
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic: u32,
maxDescriptorSetUpdateAfterBindStorageBuffers: u32,
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic: u32,
maxDescriptorSetUpdateAfterBindSampledImages: u32,
maxDescriptorSetUpdateAfterBindStorageImages: u32,
maxDescriptorSetUpdateAfterBindInputAttachments: u32,
supportedDepthResolveModes: ResolveModeFlags align(4),
supportedStencilResolveModes: ResolveModeFlags align(4),
independentResolveNone: Bool32,
independentResolve: Bool32,
filterMinmaxSingleComponentFormats: Bool32,
filterMinmaxImageComponentMapping: Bool32,
maxTimelineSemaphoreValueDifference: u64,
framebufferIntegerColorSampleCounts: SampleCountFlags align(4) = SampleCountFlags{},
};
pub const ImageFormatListCreateInfo = extern struct {
sType: StructureType = .IMAGE_FORMAT_LIST_CREATE_INFO,
pNext: ?*const anyopaque = null,
viewFormatCount: u32 = 0,
pViewFormats: [*]const Format = undefined,
};
pub const AttachmentDescription2 = extern struct {
sType: StructureType = .ATTACHMENT_DESCRIPTION_2,
pNext: ?*const anyopaque = null,
flags: AttachmentDescriptionFlags align(4) = AttachmentDescriptionFlags{},
format: Format,
samples: SampleCountFlags align(4),
loadOp: AttachmentLoadOp,
storeOp: AttachmentStoreOp,
stencilLoadOp: AttachmentLoadOp,
stencilStoreOp: AttachmentStoreOp,
initialLayout: ImageLayout,
finalLayout: ImageLayout,
};
pub const AttachmentReference2 = extern struct {
sType: StructureType = .ATTACHMENT_REFERENCE_2,
pNext: ?*const anyopaque = null,
attachment: u32,
layout: ImageLayout,
aspectMask: ImageAspectFlags align(4),
};
pub const SubpassDescription2 = extern struct {
sType: StructureType = .SUBPASS_DESCRIPTION_2,
pNext: ?*const anyopaque = null,
flags: SubpassDescriptionFlags align(4) = SubpassDescriptionFlags{},
pipelineBindPoint: PipelineBindPoint,
viewMask: u32,
inputAttachmentCount: u32 = 0,
pInputAttachments: [*]const AttachmentReference2 = undefined,
colorAttachmentCount: u32 = 0,
pColorAttachments: [*]const AttachmentReference2 = undefined,
pResolveAttachments: ?[*]const AttachmentReference2 = null,
pDepthStencilAttachment: ?*const AttachmentReference2 = null,
preserveAttachmentCount: u32 = 0,
pPreserveAttachments: [*]const u32 = undefined,
};
pub const SubpassDependency2 = extern struct {
sType: StructureType = .SUBPASS_DEPENDENCY_2,
pNext: ?*const anyopaque = null,
srcSubpass: u32,
dstSubpass: u32,
srcStageMask: PipelineStageFlags align(4),
dstStageMask: PipelineStageFlags align(4),
srcAccessMask: AccessFlags align(4) = AccessFlags{},
dstAccessMask: AccessFlags align(4) = AccessFlags{},
dependencyFlags: DependencyFlags align(4) = DependencyFlags{},
viewOffset: i32 = 0,
};
pub const RenderPassCreateInfo2 = extern struct {
sType: StructureType = .RENDER_PASS_CREATE_INFO_2,
pNext: ?*const anyopaque = null,
flags: RenderPassCreateFlags align(4) = RenderPassCreateFlags{},
attachmentCount: u32 = 0,
pAttachments: [*]const AttachmentDescription2 = undefined,
subpassCount: u32,
pSubpasses: [*]const SubpassDescription2,
dependencyCount: u32 = 0,
pDependencies: [*]const SubpassDependency2 = undefined,
correlatedViewMaskCount: u32 = 0,
pCorrelatedViewMasks: [*]const u32 = undefined,
};
pub const SubpassBeginInfo = extern struct {
sType: StructureType = .SUBPASS_BEGIN_INFO,
pNext: ?*const anyopaque = null,
contents: SubpassContents,
};
pub const SubpassEndInfo = extern struct {
sType: StructureType = .SUBPASS_END_INFO,
pNext: ?*const anyopaque = null,
};
pub const PhysicalDevice8BitStorageFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
pNext: ?*anyopaque = null,
storageBuffer8BitAccess: Bool32,
uniformAndStorageBuffer8BitAccess: Bool32,
storagePushConstant8: Bool32,
};
pub const PhysicalDeviceDriverProperties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_DRIVER_PROPERTIES,
pNext: ?*anyopaque = null,
driverID: DriverId,
driverName: [MAX_DRIVER_NAME_SIZE-1:0]u8,
driverInfo: [MAX_DRIVER_INFO_SIZE-1:0]u8,
conformanceVersion: ConformanceVersion,
};
pub const PhysicalDeviceShaderAtomicInt64Features = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
pNext: ?*anyopaque = null,
shaderBufferInt64Atomics: Bool32,
shaderSharedInt64Atomics: Bool32,
};
pub const PhysicalDeviceShaderFloat16Int8Features = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
pNext: ?*anyopaque = null,
shaderFloat16: Bool32,
shaderInt8: Bool32,
};
pub const PhysicalDeviceFloatControlsProperties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
pNext: ?*anyopaque = null,
denormBehaviorIndependence: ShaderFloatControlsIndependence,
roundingModeIndependence: ShaderFloatControlsIndependence,
shaderSignedZeroInfNanPreserveFloat16: Bool32,
shaderSignedZeroInfNanPreserveFloat32: Bool32,
shaderSignedZeroInfNanPreserveFloat64: Bool32,
shaderDenormPreserveFloat16: Bool32,
shaderDenormPreserveFloat32: Bool32,
shaderDenormPreserveFloat64: Bool32,
shaderDenormFlushToZeroFloat16: Bool32,
shaderDenormFlushToZeroFloat32: Bool32,
shaderDenormFlushToZeroFloat64: Bool32,
shaderRoundingModeRTEFloat16: Bool32,
shaderRoundingModeRTEFloat32: Bool32,
shaderRoundingModeRTEFloat64: Bool32,
shaderRoundingModeRTZFloat16: Bool32,
shaderRoundingModeRTZFloat32: Bool32,
shaderRoundingModeRTZFloat64: Bool32,
};
pub const DescriptorSetLayoutBindingFlagsCreateInfo = extern struct {
sType: StructureType = .DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
pNext: ?*const anyopaque = null,
bindingCount: u32 = 0,
pBindingFlags: ?[*]align(4) const DescriptorBindingFlags = null,
};
pub const PhysicalDeviceDescriptorIndexingFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
pNext: ?*anyopaque = null,
shaderInputAttachmentArrayDynamicIndexing: Bool32,
shaderUniformTexelBufferArrayDynamicIndexing: Bool32,
shaderStorageTexelBufferArrayDynamicIndexing: Bool32,
shaderUniformBufferArrayNonUniformIndexing: Bool32,
shaderSampledImageArrayNonUniformIndexing: Bool32,
shaderStorageBufferArrayNonUniformIndexing: Bool32,
shaderStorageImageArrayNonUniformIndexing: Bool32,
shaderInputAttachmentArrayNonUniformIndexing: Bool32,
shaderUniformTexelBufferArrayNonUniformIndexing: Bool32,
shaderStorageTexelBufferArrayNonUniformIndexing: Bool32,
descriptorBindingUniformBufferUpdateAfterBind: Bool32,
descriptorBindingSampledImageUpdateAfterBind: Bool32,
descriptorBindingStorageImageUpdateAfterBind: Bool32,
descriptorBindingStorageBufferUpdateAfterBind: Bool32,
descriptorBindingUniformTexelBufferUpdateAfterBind: Bool32,
descriptorBindingStorageTexelBufferUpdateAfterBind: Bool32,
descriptorBindingUpdateUnusedWhilePending: Bool32,
descriptorBindingPartiallyBound: Bool32,
descriptorBindingVariableDescriptorCount: Bool32,
runtimeDescriptorArray: Bool32,
};
pub const PhysicalDeviceDescriptorIndexingProperties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
pNext: ?*anyopaque = null,
maxUpdateAfterBindDescriptorsInAllPools: u32,
shaderUniformBufferArrayNonUniformIndexingNative: Bool32,
shaderSampledImageArrayNonUniformIndexingNative: Bool32,
shaderStorageBufferArrayNonUniformIndexingNative: Bool32,
shaderStorageImageArrayNonUniformIndexingNative: Bool32,
shaderInputAttachmentArrayNonUniformIndexingNative: Bool32,
robustBufferAccessUpdateAfterBind: Bool32,
quadDivergentImplicitLod: Bool32,
maxPerStageDescriptorUpdateAfterBindSamplers: u32,
maxPerStageDescriptorUpdateAfterBindUniformBuffers: u32,
maxPerStageDescriptorUpdateAfterBindStorageBuffers: u32,
maxPerStageDescriptorUpdateAfterBindSampledImages: u32,
maxPerStageDescriptorUpdateAfterBindStorageImages: u32,
maxPerStageDescriptorUpdateAfterBindInputAttachments: u32,
maxPerStageUpdateAfterBindResources: u32,
maxDescriptorSetUpdateAfterBindSamplers: u32,
maxDescriptorSetUpdateAfterBindUniformBuffers: u32,
maxDescriptorSetUpdateAfterBindUniformBuffersDynamic: u32,
maxDescriptorSetUpdateAfterBindStorageBuffers: u32,
maxDescriptorSetUpdateAfterBindStorageBuffersDynamic: u32,
maxDescriptorSetUpdateAfterBindSampledImages: u32,
maxDescriptorSetUpdateAfterBindStorageImages: u32,
maxDescriptorSetUpdateAfterBindInputAttachments: u32,
};
pub const DescriptorSetVariableDescriptorCountAllocateInfo = extern struct {
sType: StructureType = .DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
pNext: ?*const anyopaque = null,
descriptorSetCount: u32 = 0,
pDescriptorCounts: [*]const u32 = undefined,
};
pub const DescriptorSetVariableDescriptorCountLayoutSupport = extern struct {
sType: StructureType = .DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
pNext: ?*anyopaque = null,
maxVariableDescriptorCount: u32,
};
pub const SubpassDescriptionDepthStencilResolve = extern struct {
sType: StructureType = .SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
pNext: ?*const anyopaque = null,
depthResolveMode: ResolveModeFlags align(4),
stencilResolveMode: ResolveModeFlags align(4),
pDepthStencilResolveAttachment: ?*const AttachmentReference2 = null,
};
pub const PhysicalDeviceDepthStencilResolveProperties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
pNext: ?*anyopaque = null,
supportedDepthResolveModes: ResolveModeFlags align(4),
supportedStencilResolveModes: ResolveModeFlags align(4),
independentResolveNone: Bool32,
independentResolve: Bool32,
};
pub const PhysicalDeviceScalarBlockLayoutFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
pNext: ?*anyopaque = null,
scalarBlockLayout: Bool32,
};
pub const ImageStencilUsageCreateInfo = extern struct {
sType: StructureType = .IMAGE_STENCIL_USAGE_CREATE_INFO,
pNext: ?*const anyopaque = null,
stencilUsage: ImageUsageFlags align(4),
};
pub const SamplerReductionModeCreateInfo = extern struct {
sType: StructureType = .SAMPLER_REDUCTION_MODE_CREATE_INFO,
pNext: ?*const anyopaque = null,
reductionMode: SamplerReductionMode,
};
pub const PhysicalDeviceSamplerFilterMinmaxProperties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
pNext: ?*anyopaque = null,
filterMinmaxSingleComponentFormats: Bool32,
filterMinmaxImageComponentMapping: Bool32,
};
pub const PhysicalDeviceVulkanMemoryModelFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
pNext: ?*anyopaque = null,
vulkanMemoryModel: Bool32,
vulkanMemoryModelDeviceScope: Bool32,
vulkanMemoryModelAvailabilityVisibilityChains: Bool32,
};
pub const PhysicalDeviceImagelessFramebufferFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
pNext: ?*anyopaque = null,
imagelessFramebuffer: Bool32,
};
pub const FramebufferAttachmentImageInfo = extern struct {
sType: StructureType = .FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
pNext: ?*const anyopaque = null,
flags: ImageCreateFlags align(4) = ImageCreateFlags{},
usage: ImageUsageFlags align(4),
width: u32,
height: u32,
layerCount: u32,
viewFormatCount: u32 = 0,
pViewFormats: [*]const Format = undefined,
};
pub const FramebufferAttachmentsCreateInfo = extern struct {
sType: StructureType = .FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
pNext: ?*const anyopaque = null,
attachmentImageInfoCount: u32 = 0,
pAttachmentImageInfos: [*]const FramebufferAttachmentImageInfo = undefined,
};
pub const RenderPassAttachmentBeginInfo = extern struct {
sType: StructureType = .RENDER_PASS_ATTACHMENT_BEGIN_INFO,
pNext: ?*const anyopaque = null,
attachmentCount: u32 = 0,
pAttachments: [*]const ImageView = undefined,
};
pub const PhysicalDeviceUniformBufferStandardLayoutFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
pNext: ?*anyopaque = null,
uniformBufferStandardLayout: Bool32,
};
pub const PhysicalDeviceShaderSubgroupExtendedTypesFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
pNext: ?*anyopaque = null,
shaderSubgroupExtendedTypes: Bool32,
};
pub const PhysicalDeviceSeparateDepthStencilLayoutsFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
pNext: ?*anyopaque = null,
separateDepthStencilLayouts: Bool32,
};
pub const AttachmentReferenceStencilLayout = extern struct {
sType: StructureType = .ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
pNext: ?*anyopaque = null,
stencilLayout: ImageLayout,
};
pub const AttachmentDescriptionStencilLayout = extern struct {
sType: StructureType = .ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
pNext: ?*anyopaque = null,
stencilInitialLayout: ImageLayout,
stencilFinalLayout: ImageLayout,
};
pub const PhysicalDeviceHostQueryResetFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
pNext: ?*anyopaque = null,
hostQueryReset: Bool32,
};
pub const PhysicalDeviceTimelineSemaphoreFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
pNext: ?*anyopaque = null,
timelineSemaphore: Bool32,
};
pub const PhysicalDeviceTimelineSemaphoreProperties = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
pNext: ?*anyopaque = null,
maxTimelineSemaphoreValueDifference: u64,
};
pub const SemaphoreTypeCreateInfo = extern struct {
sType: StructureType = .SEMAPHORE_TYPE_CREATE_INFO,
pNext: ?*const anyopaque = null,
semaphoreType: SemaphoreType,
initialValue: u64,
};
pub const TimelineSemaphoreSubmitInfo = extern struct {
sType: StructureType = .TIMELINE_SEMAPHORE_SUBMIT_INFO,
pNext: ?*const anyopaque = null,
waitSemaphoreValueCount: u32 = 0,
pWaitSemaphoreValues: ?[*]const u64 = null,
signalSemaphoreValueCount: u32 = 0,
pSignalSemaphoreValues: ?[*]const u64 = null,
};
pub const SemaphoreWaitInfo = extern struct {
sType: StructureType = .SEMAPHORE_WAIT_INFO,
pNext: ?*const anyopaque = null,
flags: SemaphoreWaitFlags align(4) = SemaphoreWaitFlags{},
semaphoreCount: u32,
pSemaphores: [*]const Semaphore,
pValues: [*]const u64,
};
pub const SemaphoreSignalInfo = extern struct {
sType: StructureType = .SEMAPHORE_SIGNAL_INFO,
pNext: ?*const anyopaque = null,
semaphore: Semaphore,
value: u64,
};
pub const PhysicalDeviceBufferDeviceAddressFeatures = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
pNext: ?*anyopaque = null,
bufferDeviceAddress: Bool32,
bufferDeviceAddressCaptureReplay: Bool32,
bufferDeviceAddressMultiDevice: Bool32,
};
pub const BufferDeviceAddressInfo = extern struct {
sType: StructureType = .BUFFER_DEVICE_ADDRESS_INFO,
pNext: ?*const anyopaque = null,
buffer: Buffer,
};
pub const BufferOpaqueCaptureAddressCreateInfo = extern struct {
sType: StructureType = .BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
pNext: ?*const anyopaque = null,
opaqueCaptureAddress: u64,
};
pub const MemoryOpaqueCaptureAddressAllocateInfo = extern struct {
sType: StructureType = .MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
pNext: ?*const anyopaque = null,
opaqueCaptureAddress: u64,
};
pub const DeviceMemoryOpaqueCaptureAddressInfo = extern struct {
sType: StructureType = .DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
pNext: ?*const anyopaque = null,
memory: DeviceMemory,
};
pub extern fn vkCmdDrawIndirectCount(
commandBuffer: CommandBuffer,
buffer: Buffer,
offset: DeviceSize,
countBuffer: Buffer,
countBufferOffset: DeviceSize,
maxDrawCount: u32,
stride: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDrawIndexedIndirectCount(
commandBuffer: CommandBuffer,
buffer: Buffer,
offset: DeviceSize,
countBuffer: Buffer,
countBufferOffset: DeviceSize,
maxDrawCount: u32,
stride: u32,
) callconv(CallConv) void;
pub extern fn vkCreateRenderPass2(
device: Device,
pCreateInfo: *const RenderPassCreateInfo2,
pAllocator: ?*const AllocationCallbacks,
pRenderPass: *RenderPass,
) callconv(CallConv) Result;
pub extern fn vkCmdBeginRenderPass2(
commandBuffer: CommandBuffer,
pRenderPassBegin: *const RenderPassBeginInfo,
pSubpassBeginInfo: *const SubpassBeginInfo,
) callconv(CallConv) void;
pub extern fn vkCmdNextSubpass2(
commandBuffer: CommandBuffer,
pSubpassBeginInfo: *const SubpassBeginInfo,
pSubpassEndInfo: *const SubpassEndInfo,
) callconv(CallConv) void;
pub extern fn vkCmdEndRenderPass2(
commandBuffer: CommandBuffer,
pSubpassEndInfo: *const SubpassEndInfo,
) callconv(CallConv) void;
pub extern fn vkResetQueryPool(
device: Device,
queryPool: QueryPool,
firstQuery: u32,
queryCount: u32,
) callconv(CallConv) void;
pub extern fn vkGetSemaphoreCounterValue(
device: Device,
semaphore: Semaphore,
pValue: *u64,
) callconv(CallConv) Result;
pub extern fn vkWaitSemaphores(
device: Device,
pWaitInfo: *const SemaphoreWaitInfo,
timeout: u64,
) callconv(CallConv) Result;
pub extern fn vkSignalSemaphore(
device: Device,
pSignalInfo: *const SemaphoreSignalInfo,
) callconv(CallConv) Result;
pub extern fn vkGetBufferDeviceAddress(
device: Device,
pInfo: *const BufferDeviceAddressInfo,
) callconv(CallConv) DeviceAddress;
pub extern fn vkGetBufferOpaqueCaptureAddress(
device: Device,
pInfo: *const BufferDeviceAddressInfo,
) callconv(CallConv) u64;
pub extern fn vkGetDeviceMemoryOpaqueCaptureAddress(
device: Device,
pInfo: *const DeviceMemoryOpaqueCaptureAddressInfo,
) callconv(CallConv) u64;
pub const CmdDrawIndirectCount = vkCmdDrawIndirectCount;
pub const CmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCount;
pub inline fn CreateRenderPass2(device: Device, createInfo: RenderPassCreateInfo2, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!RenderPass {
var out_renderPass: RenderPass = undefined;
const result = vkCreateRenderPass2(device, &createInfo, pAllocator, &out_renderPass);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_renderPass;
}
pub inline fn CmdBeginRenderPass2(commandBuffer: CommandBuffer, renderPassBegin: RenderPassBeginInfo, subpassBeginInfo: SubpassBeginInfo) void {
vkCmdBeginRenderPass2(commandBuffer, &renderPassBegin, &subpassBeginInfo);
}
pub inline fn CmdNextSubpass2(commandBuffer: CommandBuffer, subpassBeginInfo: SubpassBeginInfo, subpassEndInfo: SubpassEndInfo) void {
vkCmdNextSubpass2(commandBuffer, &subpassBeginInfo, &subpassEndInfo);
}
pub inline fn CmdEndRenderPass2(commandBuffer: CommandBuffer, subpassEndInfo: SubpassEndInfo) void {
vkCmdEndRenderPass2(commandBuffer, &subpassEndInfo);
}
pub const ResetQueryPool = vkResetQueryPool;
pub inline fn GetSemaphoreCounterValue(device: Device, semaphore: Semaphore) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!u64 {
var out_value: u64 = undefined;
const result = vkGetSemaphoreCounterValue(device, semaphore, &out_value);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_value;
}
pub inline fn WaitSemaphores(device: Device, waitInfo: SemaphoreWaitInfo, timeout: u64) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!Result {
const result = vkWaitSemaphores(device, &waitInfo, timeout);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return result;
}
pub inline fn SignalSemaphore(device: Device, signalInfo: SemaphoreSignalInfo) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkSignalSemaphore(device, &signalInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn GetBufferDeviceAddress(device: Device, info: BufferDeviceAddressInfo) DeviceAddress {
const result = vkGetBufferDeviceAddress(device, &info);
return result;
}
pub inline fn GetBufferOpaqueCaptureAddress(device: Device, info: BufferDeviceAddressInfo) u64 {
const result = vkGetBufferOpaqueCaptureAddress(device, &info);
return result;
}
pub inline fn GetDeviceMemoryOpaqueCaptureAddress(device: Device, info: DeviceMemoryOpaqueCaptureAddressInfo) u64 {
const result = vkGetDeviceMemoryOpaqueCaptureAddress(device, &info);
return result;
}
pub const KHR_surface = 1;
pub const SurfaceKHR = enum(u64) { Null = 0, _ };
pub const KHR_SURFACE_SPEC_VERSION = 25;
pub const KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface";
pub const ColorSpaceKHR = enum(i32) {
SRGB_NONLINEAR = 0,
DISPLAY_P3_NONLINEAR_EXT = 1000104001,
EXTENDED_SRGB_LINEAR_EXT = 1000104002,
DISPLAY_P3_LINEAR_EXT = 1000104003,
DCI_P3_NONLINEAR_EXT = 1000104004,
BT709_LINEAR_EXT = 1000104005,
BT709_NONLINEAR_EXT = 1000104006,
BT2020_LINEAR_EXT = 1000104007,
HDR10_ST2084_EXT = 1000104008,
DOLBYVISION_EXT = 1000104009,
HDR10_HLG_EXT = 1000104010,
ADOBERGB_LINEAR_EXT = 1000104011,
ADOBERGB_NONLINEAR_EXT = 1000104012,
PASS_THROUGH_EXT = 1000104013,
EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
DISPLAY_NATIVE_AMD = 1000213000,
_,
const Self = @This();
pub const COLORSPACE_SRGB_NONLINEAR = Self.SRGB_NONLINEAR;
pub const DCI_P3_LINEAR_EXT = Self.DISPLAY_P3_LINEAR_EXT;
};
pub const PresentModeKHR = enum(i32) {
IMMEDIATE = 0,
MAILBOX = 1,
FIFO = 2,
FIFO_RELAXED = 3,
SHARED_DEMAND_REFRESH = 1000111000,
SHARED_CONTINUOUS_REFRESH = 1000111001,
_,
};
pub const SurfaceTransformFlagsKHR = packed struct {
identity: bool = false,
rotate90: bool = false,
rotate180: bool = false,
rotate270: bool = false,
horizontalMirror: bool = false,
horizontalMirrorRotate90: bool = false,
horizontalMirrorRotate180: bool = false,
horizontalMirrorRotate270: bool = false,
inherit: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const CompositeAlphaFlagsKHR = packed struct {
@"opaque": bool = false,
preMultiplied: bool = false,
postMultiplied: bool = false,
inherit: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const SurfaceCapabilitiesKHR = extern struct {
minImageCount: u32,
maxImageCount: u32,
currentExtent: Extent2D,
minImageExtent: Extent2D,
maxImageExtent: Extent2D,
maxImageArrayLayers: u32,
supportedTransforms: SurfaceTransformFlagsKHR align(4) = SurfaceTransformFlagsKHR{},
currentTransform: SurfaceTransformFlagsKHR align(4),
supportedCompositeAlpha: CompositeAlphaFlagsKHR align(4) = CompositeAlphaFlagsKHR{},
supportedUsageFlags: ImageUsageFlags align(4) = ImageUsageFlags{},
};
pub const SurfaceFormatKHR = extern struct {
format: Format,
colorSpace: ColorSpaceKHR,
};
pub extern fn vkDestroySurfaceKHR(
instance: Instance,
surface: SurfaceKHR,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceSurfaceSupportKHR(
physicalDevice: PhysicalDevice,
queueFamilyIndex: u32,
surface: SurfaceKHR,
pSupported: *Bool32,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
physicalDevice: PhysicalDevice,
surface: SurfaceKHR,
pSurfaceCapabilities: *SurfaceCapabilitiesKHR,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDeviceSurfaceFormatsKHR(
physicalDevice: PhysicalDevice,
surface: SurfaceKHR,
pSurfaceFormatCount: *u32,
pSurfaceFormats: ?[*]SurfaceFormatKHR,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDeviceSurfacePresentModesKHR(
physicalDevice: PhysicalDevice,
surface: SurfaceKHR,
pPresentModeCount: *u32,
pPresentModes: ?[*]PresentModeKHR,
) callconv(CallConv) Result;
pub const DestroySurfaceKHR = vkDestroySurfaceKHR;
pub inline fn GetPhysicalDeviceSurfaceSupportKHR(physicalDevice: PhysicalDevice, queueFamilyIndex: u32, surface: SurfaceKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!Bool32 {
var out_supported: Bool32 = undefined;
const result = vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, &out_supported);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_supported;
}
pub inline fn GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice: PhysicalDevice, surface: SurfaceKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!SurfaceCapabilitiesKHR {
var out_surfaceCapabilities: SurfaceCapabilitiesKHR = undefined;
const result = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, &out_surfaceCapabilities);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_surfaceCapabilities;
}
pub const GetPhysicalDeviceSurfaceFormatsKHRResult = struct {
result: Result,
surfaceFormats: []SurfaceFormatKHR,
};
pub inline fn GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice: PhysicalDevice, surface: SurfaceKHR, surfaceFormats: []SurfaceFormatKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!GetPhysicalDeviceSurfaceFormatsKHRResult {
var returnValues: GetPhysicalDeviceSurfaceFormatsKHRResult = undefined;
var surfaceFormatCount: u32 = @intCast(u32, surfaceFormats.len);
const result = vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, &surfaceFormatCount, surfaceFormats.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.surfaceFormats = surfaceFormats[0..surfaceFormatCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPhysicalDeviceSurfaceFormatsCountKHR(physicalDevice: PhysicalDevice, surface: SurfaceKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!u32 {
var out_surfaceFormatCount: u32 = undefined;
const result = vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, &out_surfaceFormatCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_surfaceFormatCount;
}
pub const GetPhysicalDeviceSurfacePresentModesKHRResult = struct {
result: Result,
presentModes: []PresentModeKHR,
};
pub inline fn GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice: PhysicalDevice, surface: SurfaceKHR, presentModes: []PresentModeKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!GetPhysicalDeviceSurfacePresentModesKHRResult {
var returnValues: GetPhysicalDeviceSurfacePresentModesKHRResult = undefined;
var presentModeCount: u32 = @intCast(u32, presentModes.len);
const result = vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, &presentModeCount, presentModes.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.presentModes = presentModes[0..presentModeCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPhysicalDeviceSurfacePresentModesCountKHR(physicalDevice: PhysicalDevice, surface: SurfaceKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!u32 {
var out_presentModeCount: u32 = undefined;
const result = vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, &out_presentModeCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_presentModeCount;
}
pub const KHR_swapchain = 1;
pub const SwapchainKHR = enum(u64) { Null = 0, _ };
pub const KHR_SWAPCHAIN_SPEC_VERSION = 70;
pub const KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain";
pub const SwapchainCreateFlagsKHR = packed struct {
splitInstanceBindRegions: bool = false,
protected: bool = false,
mutableFormat: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const DeviceGroupPresentModeFlagsKHR = packed struct {
local: bool = false,
remote: bool = false,
sum: bool = false,
localMultiDevice: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const SwapchainCreateInfoKHR = extern struct {
sType: StructureType = .SWAPCHAIN_CREATE_INFO_KHR,
pNext: ?*const anyopaque = null,
flags: SwapchainCreateFlagsKHR align(4) = SwapchainCreateFlagsKHR{},
surface: SurfaceKHR,
minImageCount: u32,
imageFormat: Format,
imageColorSpace: ColorSpaceKHR,
imageExtent: Extent2D,
imageArrayLayers: u32,
imageUsage: ImageUsageFlags align(4),
imageSharingMode: SharingMode,
queueFamilyIndexCount: u32 = 0,
pQueueFamilyIndices: [*]const u32 = undefined,
preTransform: SurfaceTransformFlagsKHR align(4),
compositeAlpha: CompositeAlphaFlagsKHR align(4),
presentMode: PresentModeKHR,
clipped: Bool32,
oldSwapchain: SwapchainKHR = SwapchainKHR.Null,
};
pub const PresentInfoKHR = extern struct {
sType: StructureType = .PRESENT_INFO_KHR,
pNext: ?*const anyopaque = null,
waitSemaphoreCount: u32 = 0,
pWaitSemaphores: [*]const Semaphore = undefined,
swapchainCount: u32,
pSwapchains: [*]const SwapchainKHR,
pImageIndices: [*]const u32,
pResults: ?[*]Result = null,
};
pub const ImageSwapchainCreateInfoKHR = extern struct {
sType: StructureType = .IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
pNext: ?*const anyopaque = null,
swapchain: SwapchainKHR = SwapchainKHR.Null,
};
pub const BindImageMemorySwapchainInfoKHR = extern struct {
sType: StructureType = .BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
pNext: ?*const anyopaque = null,
swapchain: SwapchainKHR,
imageIndex: u32,
};
pub const AcquireNextImageInfoKHR = extern struct {
sType: StructureType = .ACQUIRE_NEXT_IMAGE_INFO_KHR,
pNext: ?*const anyopaque = null,
swapchain: SwapchainKHR,
timeout: u64,
semaphore: Semaphore = Semaphore.Null,
fence: Fence = Fence.Null,
deviceMask: u32,
};
pub const DeviceGroupPresentCapabilitiesKHR = extern struct {
sType: StructureType = .DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
pNext: ?*const anyopaque = null,
presentMask: [MAX_DEVICE_GROUP_SIZE]u32,
modes: DeviceGroupPresentModeFlagsKHR align(4),
};
pub const DeviceGroupPresentInfoKHR = extern struct {
sType: StructureType = .DEVICE_GROUP_PRESENT_INFO_KHR,
pNext: ?*const anyopaque = null,
swapchainCount: u32 = 0,
pDeviceMasks: [*]const u32 = undefined,
mode: DeviceGroupPresentModeFlagsKHR align(4),
};
pub const DeviceGroupSwapchainCreateInfoKHR = extern struct {
sType: StructureType = .DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
pNext: ?*const anyopaque = null,
modes: DeviceGroupPresentModeFlagsKHR align(4),
};
pub extern fn vkCreateSwapchainKHR(
device: Device,
pCreateInfo: *const SwapchainCreateInfoKHR,
pAllocator: ?*const AllocationCallbacks,
pSwapchain: *SwapchainKHR,
) callconv(CallConv) Result;
pub extern fn vkDestroySwapchainKHR(
device: Device,
swapchain: SwapchainKHR,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkGetSwapchainImagesKHR(
device: Device,
swapchain: SwapchainKHR,
pSwapchainImageCount: *u32,
pSwapchainImages: ?[*]Image,
) callconv(CallConv) Result;
pub extern fn vkAcquireNextImageKHR(
device: Device,
swapchain: SwapchainKHR,
timeout: u64,
semaphore: Semaphore,
fence: Fence,
pImageIndex: *u32,
) callconv(CallConv) Result;
pub extern fn vkQueuePresentKHR(
queue: Queue,
pPresentInfo: *const PresentInfoKHR,
) callconv(CallConv) Result;
pub extern fn vkGetDeviceGroupPresentCapabilitiesKHR(
device: Device,
pDeviceGroupPresentCapabilities: *DeviceGroupPresentCapabilitiesKHR,
) callconv(CallConv) Result;
pub extern fn vkGetDeviceGroupSurfacePresentModesKHR(
device: Device,
surface: SurfaceKHR,
pModes: *align(4) DeviceGroupPresentModeFlagsKHR,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDevicePresentRectanglesKHR(
physicalDevice: PhysicalDevice,
surface: SurfaceKHR,
pRectCount: *u32,
pRects: ?[*]Rect2D,
) callconv(CallConv) Result;
pub extern fn vkAcquireNextImage2KHR(
device: Device,
pAcquireInfo: *const AcquireNextImageInfoKHR,
pImageIndex: *u32,
) callconv(CallConv) Result;
pub inline fn CreateSwapchainKHR(device: Device, createInfo: SwapchainCreateInfoKHR, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_SURFACE_LOST_KHR,VK_NATIVE_WINDOW_IN_USE_KHR,VK_INITIALIZATION_FAILED,VK_UNDOCUMENTED_ERROR}!SwapchainKHR {
var out_swapchain: SwapchainKHR = undefined;
const result = vkCreateSwapchainKHR(device, &createInfo, pAllocator, &out_swapchain);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
.ERROR_NATIVE_WINDOW_IN_USE_KHR => error.VK_NATIVE_WINDOW_IN_USE_KHR,
.ERROR_INITIALIZATION_FAILED => error.VK_INITIALIZATION_FAILED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_swapchain;
}
pub const DestroySwapchainKHR = vkDestroySwapchainKHR;
pub const GetSwapchainImagesKHRResult = struct {
result: Result,
swapchainImages: []Image,
};
pub inline fn GetSwapchainImagesKHR(device: Device, swapchain: SwapchainKHR, swapchainImages: []Image) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetSwapchainImagesKHRResult {
var returnValues: GetSwapchainImagesKHRResult = undefined;
var swapchainImageCount: u32 = @intCast(u32, swapchainImages.len);
const result = vkGetSwapchainImagesKHR(device, swapchain, &swapchainImageCount, swapchainImages.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.swapchainImages = swapchainImages[0..swapchainImageCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetSwapchainImagesCountKHR(device: Device, swapchain: SwapchainKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_swapchainImageCount: u32 = undefined;
const result = vkGetSwapchainImagesKHR(device, swapchain, &out_swapchainImageCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_swapchainImageCount;
}
pub const AcquireNextImageKHRResult = struct {
result: Result,
imageIndex: u32,
};
pub inline fn AcquireNextImageKHR(device: Device, swapchain: SwapchainKHR, timeout: u64, semaphore: Semaphore, fence: Fence) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_OUT_OF_DATE_KHR,VK_SURFACE_LOST_KHR,VK_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT,VK_UNDOCUMENTED_ERROR}!AcquireNextImageKHRResult {
var returnValues: AcquireNextImageKHRResult = undefined;
const result = vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, &returnValues.imageIndex);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
.ERROR_OUT_OF_DATE_KHR => error.VK_OUT_OF_DATE_KHR,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT => error.VK_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.result = result;
return returnValues;
}
pub inline fn QueuePresentKHR(queue: Queue, presentInfo: PresentInfoKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_OUT_OF_DATE_KHR,VK_SURFACE_LOST_KHR,VK_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT,VK_UNDOCUMENTED_ERROR}!Result {
const result = vkQueuePresentKHR(queue, &presentInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
.ERROR_OUT_OF_DATE_KHR => error.VK_OUT_OF_DATE_KHR,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT => error.VK_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return result;
}
pub inline fn GetDeviceGroupPresentCapabilitiesKHR(device: Device) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!DeviceGroupPresentCapabilitiesKHR {
var out_deviceGroupPresentCapabilities: DeviceGroupPresentCapabilitiesKHR = undefined;
const result = vkGetDeviceGroupPresentCapabilitiesKHR(device, &out_deviceGroupPresentCapabilities);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_deviceGroupPresentCapabilities;
}
pub inline fn GetDeviceGroupSurfacePresentModesKHR(device: Device, surface: SurfaceKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!DeviceGroupPresentModeFlagsKHR {
var out_modes: DeviceGroupPresentModeFlagsKHR align(4) = undefined;
const result = vkGetDeviceGroupSurfacePresentModesKHR(device, surface, &out_modes);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_modes;
}
pub const GetPhysicalDevicePresentRectanglesKHRResult = struct {
result: Result,
rects: []Rect2D,
};
pub inline fn GetPhysicalDevicePresentRectanglesKHR(physicalDevice: PhysicalDevice, surface: SurfaceKHR, rects: []Rect2D) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetPhysicalDevicePresentRectanglesKHRResult {
var returnValues: GetPhysicalDevicePresentRectanglesKHRResult = undefined;
var rectCount: u32 = @intCast(u32, rects.len);
const result = vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, &rectCount, rects.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.rects = rects[0..rectCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPhysicalDevicePresentRectanglesCountKHR(physicalDevice: PhysicalDevice, surface: SurfaceKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_rectCount: u32 = undefined;
const result = vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, &out_rectCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_rectCount;
}
pub const AcquireNextImage2KHRResult = struct {
result: Result,
imageIndex: u32,
};
pub inline fn AcquireNextImage2KHR(device: Device, acquireInfo: AcquireNextImageInfoKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_OUT_OF_DATE_KHR,VK_SURFACE_LOST_KHR,VK_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT,VK_UNDOCUMENTED_ERROR}!AcquireNextImage2KHRResult {
var returnValues: AcquireNextImage2KHRResult = undefined;
const result = vkAcquireNextImage2KHR(device, &acquireInfo, &returnValues.imageIndex);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
.ERROR_OUT_OF_DATE_KHR => error.VK_OUT_OF_DATE_KHR,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT => error.VK_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.result = result;
return returnValues;
}
pub const KHR_display = 1;
pub const DisplayKHR = enum(u64) { Null = 0, _ };
pub const DisplayModeKHR = enum(u64) { Null = 0, _ };
pub const KHR_DISPLAY_SPEC_VERSION = 23;
pub const KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display";
pub const DisplayPlaneAlphaFlagsKHR = packed struct {
@"opaque": bool = false,
global: bool = false,
perPixel: bool = false,
perPixelPremultiplied: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const DisplayModeCreateFlagsKHR = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const DisplaySurfaceCreateFlagsKHR = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const DisplayPropertiesKHR = extern struct {
display: DisplayKHR,
displayName: CString,
physicalDimensions: Extent2D,
physicalResolution: Extent2D,
supportedTransforms: SurfaceTransformFlagsKHR align(4) = SurfaceTransformFlagsKHR{},
planeReorderPossible: Bool32,
persistentContent: Bool32,
};
pub const DisplayModeParametersKHR = extern struct {
visibleRegion: Extent2D,
refreshRate: u32,
};
pub const DisplayModePropertiesKHR = extern struct {
displayMode: DisplayModeKHR,
parameters: DisplayModeParametersKHR,
};
pub const DisplayModeCreateInfoKHR = extern struct {
sType: StructureType = .DISPLAY_MODE_CREATE_INFO_KHR,
pNext: ?*const anyopaque = null,
flags: DisplayModeCreateFlagsKHR align(4) = DisplayModeCreateFlagsKHR{},
parameters: DisplayModeParametersKHR,
};
pub const DisplayPlaneCapabilitiesKHR = extern struct {
supportedAlpha: DisplayPlaneAlphaFlagsKHR align(4) = DisplayPlaneAlphaFlagsKHR{},
minSrcPosition: Offset2D,
maxSrcPosition: Offset2D,
minSrcExtent: Extent2D,
maxSrcExtent: Extent2D,
minDstPosition: Offset2D,
maxDstPosition: Offset2D,
minDstExtent: Extent2D,
maxDstExtent: Extent2D,
};
pub const DisplayPlanePropertiesKHR = extern struct {
currentDisplay: DisplayKHR,
currentStackIndex: u32,
};
pub const DisplaySurfaceCreateInfoKHR = extern struct {
sType: StructureType = .DISPLAY_SURFACE_CREATE_INFO_KHR,
pNext: ?*const anyopaque = null,
flags: DisplaySurfaceCreateFlagsKHR align(4) = DisplaySurfaceCreateFlagsKHR{},
displayMode: DisplayModeKHR,
planeIndex: u32,
planeStackIndex: u32,
transform: SurfaceTransformFlagsKHR align(4),
globalAlpha: f32,
alphaMode: DisplayPlaneAlphaFlagsKHR align(4),
imageExtent: Extent2D,
};
pub extern fn vkGetPhysicalDeviceDisplayPropertiesKHR(
physicalDevice: PhysicalDevice,
pPropertyCount: *u32,
pProperties: ?[*]DisplayPropertiesKHR,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
physicalDevice: PhysicalDevice,
pPropertyCount: *u32,
pProperties: ?[*]DisplayPlanePropertiesKHR,
) callconv(CallConv) Result;
pub extern fn vkGetDisplayPlaneSupportedDisplaysKHR(
physicalDevice: PhysicalDevice,
planeIndex: u32,
pDisplayCount: *u32,
pDisplays: ?[*]DisplayKHR,
) callconv(CallConv) Result;
pub extern fn vkGetDisplayModePropertiesKHR(
physicalDevice: PhysicalDevice,
display: DisplayKHR,
pPropertyCount: *u32,
pProperties: ?[*]DisplayModePropertiesKHR,
) callconv(CallConv) Result;
pub extern fn vkCreateDisplayModeKHR(
physicalDevice: PhysicalDevice,
display: DisplayKHR,
pCreateInfo: *const DisplayModeCreateInfoKHR,
pAllocator: ?*const AllocationCallbacks,
pMode: *DisplayModeKHR,
) callconv(CallConv) Result;
pub extern fn vkGetDisplayPlaneCapabilitiesKHR(
physicalDevice: PhysicalDevice,
mode: DisplayModeKHR,
planeIndex: u32,
pCapabilities: *DisplayPlaneCapabilitiesKHR,
) callconv(CallConv) Result;
pub extern fn vkCreateDisplayPlaneSurfaceKHR(
instance: Instance,
pCreateInfo: *const DisplaySurfaceCreateInfoKHR,
pAllocator: ?*const AllocationCallbacks,
pSurface: *SurfaceKHR,
) callconv(CallConv) Result;
pub const GetPhysicalDeviceDisplayPropertiesKHRResult = struct {
result: Result,
properties: []DisplayPropertiesKHR,
};
pub inline fn GetPhysicalDeviceDisplayPropertiesKHR(physicalDevice: PhysicalDevice, properties: []DisplayPropertiesKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetPhysicalDeviceDisplayPropertiesKHRResult {
var returnValues: GetPhysicalDeviceDisplayPropertiesKHRResult = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
const result = vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, &propertyCount, properties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.properties = properties[0..propertyCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPhysicalDeviceDisplayPropertiesCountKHR(physicalDevice: PhysicalDevice) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_propertyCount: u32 = undefined;
const result = vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, &out_propertyCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_propertyCount;
}
pub const GetPhysicalDeviceDisplayPlanePropertiesKHRResult = struct {
result: Result,
properties: []DisplayPlanePropertiesKHR,
};
pub inline fn GetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice: PhysicalDevice, properties: []DisplayPlanePropertiesKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetPhysicalDeviceDisplayPlanePropertiesKHRResult {
var returnValues: GetPhysicalDeviceDisplayPlanePropertiesKHRResult = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
const result = vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, &propertyCount, properties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.properties = properties[0..propertyCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPhysicalDeviceDisplayPlanePropertiesCountKHR(physicalDevice: PhysicalDevice) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_propertyCount: u32 = undefined;
const result = vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, &out_propertyCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_propertyCount;
}
pub const GetDisplayPlaneSupportedDisplaysKHRResult = struct {
result: Result,
displays: []DisplayKHR,
};
pub inline fn GetDisplayPlaneSupportedDisplaysKHR(physicalDevice: PhysicalDevice, planeIndex: u32, displays: []DisplayKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetDisplayPlaneSupportedDisplaysKHRResult {
var returnValues: GetDisplayPlaneSupportedDisplaysKHRResult = undefined;
var displayCount: u32 = @intCast(u32, displays.len);
const result = vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, &displayCount, displays.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.displays = displays[0..displayCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetDisplayPlaneSupportedDisplaysCountKHR(physicalDevice: PhysicalDevice, planeIndex: u32) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_displayCount: u32 = undefined;
const result = vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, &out_displayCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_displayCount;
}
pub const GetDisplayModePropertiesKHRResult = struct {
result: Result,
properties: []DisplayModePropertiesKHR,
};
pub inline fn GetDisplayModePropertiesKHR(physicalDevice: PhysicalDevice, display: DisplayKHR, properties: []DisplayModePropertiesKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetDisplayModePropertiesKHRResult {
var returnValues: GetDisplayModePropertiesKHRResult = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
const result = vkGetDisplayModePropertiesKHR(physicalDevice, display, &propertyCount, properties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.properties = properties[0..propertyCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetDisplayModePropertiesCountKHR(physicalDevice: PhysicalDevice, display: DisplayKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_propertyCount: u32 = undefined;
const result = vkGetDisplayModePropertiesKHR(physicalDevice, display, &out_propertyCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_propertyCount;
}
pub inline fn CreateDisplayModeKHR(physicalDevice: PhysicalDevice, display: DisplayKHR, createInfo: DisplayModeCreateInfoKHR, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INITIALIZATION_FAILED,VK_UNDOCUMENTED_ERROR}!DisplayModeKHR {
var out_mode: DisplayModeKHR = undefined;
const result = vkCreateDisplayModeKHR(physicalDevice, display, &createInfo, pAllocator, &out_mode);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INITIALIZATION_FAILED => error.VK_INITIALIZATION_FAILED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_mode;
}
pub inline fn GetDisplayPlaneCapabilitiesKHR(physicalDevice: PhysicalDevice, mode: DisplayModeKHR, planeIndex: u32) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!DisplayPlaneCapabilitiesKHR {
var out_capabilities: DisplayPlaneCapabilitiesKHR = undefined;
const result = vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, &out_capabilities);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_capabilities;
}
pub inline fn CreateDisplayPlaneSurfaceKHR(instance: Instance, createInfo: DisplaySurfaceCreateInfoKHR, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!SurfaceKHR {
var out_surface: SurfaceKHR = undefined;
const result = vkCreateDisplayPlaneSurfaceKHR(instance, &createInfo, pAllocator, &out_surface);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_surface;
}
pub const KHR_display_swapchain = 1;
pub const KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10;
pub const KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain";
pub const DisplayPresentInfoKHR = extern struct {
sType: StructureType = .DISPLAY_PRESENT_INFO_KHR,
pNext: ?*const anyopaque = null,
srcRect: Rect2D,
dstRect: Rect2D,
persistent: Bool32,
};
pub extern fn vkCreateSharedSwapchainsKHR(
device: Device,
swapchainCount: u32,
pCreateInfos: [*]const SwapchainCreateInfoKHR,
pAllocator: ?*const AllocationCallbacks,
pSwapchains: [*]SwapchainKHR,
) callconv(CallConv) Result;
pub inline fn CreateSharedSwapchainsKHR(device: Device, createInfos: []const SwapchainCreateInfoKHR, pAllocator: ?*const AllocationCallbacks, swapchains: []SwapchainKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INCOMPATIBLE_DISPLAY_KHR,VK_DEVICE_LOST,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!void {
assert(swapchains.len >= createInfos.len);
const result = vkCreateSharedSwapchainsKHR(device, @intCast(u32, createInfos.len), createInfos.ptr, pAllocator, swapchains.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INCOMPATIBLE_DISPLAY_KHR => error.VK_INCOMPATIBLE_DISPLAY_KHR,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub const KHR_sampler_mirror_clamp_to_edge = 1;
pub const KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3;
pub const KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge";
pub const KHR_multiview = 1;
pub const KHR_MULTIVIEW_SPEC_VERSION = 1;
pub const KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview";
pub const RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
pub const PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
pub const PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
pub const KHR_get_physical_device_properties2 = 1;
pub const KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2;
pub const KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2";
pub const PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
pub const PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
pub const FormatProperties2KHR = FormatProperties2;
pub const ImageFormatProperties2KHR = ImageFormatProperties2;
pub const PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
pub const QueueFamilyProperties2KHR = QueueFamilyProperties2;
pub const PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
pub const SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
pub const PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
pub extern fn vkGetPhysicalDeviceFeatures2KHR(
physicalDevice: PhysicalDevice,
pFeatures: *PhysicalDeviceFeatures2,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceProperties2KHR(
physicalDevice: PhysicalDevice,
pProperties: *PhysicalDeviceProperties2,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceFormatProperties2KHR(
physicalDevice: PhysicalDevice,
format: Format,
pFormatProperties: *FormatProperties2,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceImageFormatProperties2KHR(
physicalDevice: PhysicalDevice,
pImageFormatInfo: *const PhysicalDeviceImageFormatInfo2,
pImageFormatProperties: *ImageFormatProperties2,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDeviceQueueFamilyProperties2KHR(
physicalDevice: PhysicalDevice,
pQueueFamilyPropertyCount: *u32,
pQueueFamilyProperties: ?[*]QueueFamilyProperties2,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceMemoryProperties2KHR(
physicalDevice: PhysicalDevice,
pMemoryProperties: *PhysicalDeviceMemoryProperties2,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
physicalDevice: PhysicalDevice,
pFormatInfo: *const PhysicalDeviceSparseImageFormatInfo2,
pPropertyCount: *u32,
pProperties: ?[*]SparseImageFormatProperties2,
) callconv(CallConv) void;
pub inline fn GetPhysicalDeviceFeatures2KHR(physicalDevice: PhysicalDevice) PhysicalDeviceFeatures2 {
var out_features: PhysicalDeviceFeatures2 = undefined;
vkGetPhysicalDeviceFeatures2KHR(physicalDevice, &out_features);
return out_features;
}
pub inline fn GetPhysicalDeviceProperties2KHR(physicalDevice: PhysicalDevice) PhysicalDeviceProperties2 {
var out_properties: PhysicalDeviceProperties2 = undefined;
vkGetPhysicalDeviceProperties2KHR(physicalDevice, &out_properties);
return out_properties;
}
pub inline fn GetPhysicalDeviceFormatProperties2KHR(physicalDevice: PhysicalDevice, format: Format) FormatProperties2 {
var out_formatProperties: FormatProperties2 = undefined;
vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, &out_formatProperties);
return out_formatProperties;
}
pub inline fn GetPhysicalDeviceImageFormatProperties2KHR(physicalDevice: PhysicalDevice, imageFormatInfo: PhysicalDeviceImageFormatInfo2) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_FORMAT_NOT_SUPPORTED,VK_UNDOCUMENTED_ERROR}!ImageFormatProperties2 {
var out_imageFormatProperties: ImageFormatProperties2 = undefined;
const result = vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, &imageFormatInfo, &out_imageFormatProperties);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_FORMAT_NOT_SUPPORTED => error.VK_FORMAT_NOT_SUPPORTED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_imageFormatProperties;
}
pub inline fn GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice: PhysicalDevice, queueFamilyProperties: []QueueFamilyProperties2) []QueueFamilyProperties2 {
var out_queueFamilyProperties: []QueueFamilyProperties2 = undefined;
var queueFamilyPropertyCount: u32 = @intCast(u32, queueFamilyProperties.len);
vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, &queueFamilyPropertyCount, queueFamilyProperties.ptr);
out_queueFamilyProperties = queueFamilyProperties[0..queueFamilyPropertyCount];
return out_queueFamilyProperties;
}
pub inline fn GetPhysicalDeviceQueueFamilyProperties2CountKHR(physicalDevice: PhysicalDevice) u32 {
var out_queueFamilyPropertyCount: u32 = undefined;
vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, &out_queueFamilyPropertyCount, null);
return out_queueFamilyPropertyCount;
}
pub inline fn GetPhysicalDeviceMemoryProperties2KHR(physicalDevice: PhysicalDevice) PhysicalDeviceMemoryProperties2 {
var out_memoryProperties: PhysicalDeviceMemoryProperties2 = undefined;
vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, &out_memoryProperties);
return out_memoryProperties;
}
pub inline fn GetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice: PhysicalDevice, formatInfo: PhysicalDeviceSparseImageFormatInfo2, properties: []SparseImageFormatProperties2) []SparseImageFormatProperties2 {
var out_properties: []SparseImageFormatProperties2 = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, &formatInfo, &propertyCount, properties.ptr);
out_properties = properties[0..propertyCount];
return out_properties;
}
pub inline fn GetPhysicalDeviceSparseImageFormatProperties2CountKHR(physicalDevice: PhysicalDevice, formatInfo: PhysicalDeviceSparseImageFormatInfo2) u32 {
var out_propertyCount: u32 = undefined;
vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, &formatInfo, &out_propertyCount, null);
return out_propertyCount;
}
pub const KHR_device_group = 1;
pub const KHR_DEVICE_GROUP_SPEC_VERSION = 4;
pub const KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group";
pub const PeerMemoryFeatureFlagsKHR = PeerMemoryFeatureFlags;
pub const MemoryAllocateFlagsKHR = MemoryAllocateFlags;
pub const MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
pub const DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
pub const DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
pub const DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
pub const DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
pub const BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
pub const BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
pub extern fn vkGetDeviceGroupPeerMemoryFeaturesKHR(
device: Device,
heapIndex: u32,
localDeviceIndex: u32,
remoteDeviceIndex: u32,
pPeerMemoryFeatures: *align(4) PeerMemoryFeatureFlags,
) callconv(CallConv) void;
pub extern fn vkCmdSetDeviceMaskKHR(
commandBuffer: CommandBuffer,
deviceMask: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDispatchBaseKHR(
commandBuffer: CommandBuffer,
baseGroupX: u32,
baseGroupY: u32,
baseGroupZ: u32,
groupCountX: u32,
groupCountY: u32,
groupCountZ: u32,
) callconv(CallConv) void;
pub inline fn GetDeviceGroupPeerMemoryFeaturesKHR(device: Device, heapIndex: u32, localDeviceIndex: u32, remoteDeviceIndex: u32) PeerMemoryFeatureFlags {
var out_peerMemoryFeatures: PeerMemoryFeatureFlags align(4) = undefined;
vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, &out_peerMemoryFeatures);
return out_peerMemoryFeatures;
}
pub const CmdSetDeviceMaskKHR = vkCmdSetDeviceMaskKHR;
pub const CmdDispatchBaseKHR = vkCmdDispatchBaseKHR;
pub const KHR_shader_draw_parameters = 1;
pub const KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1;
pub const KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters";
pub const KHR_maintenance1 = 1;
pub const KHR_MAINTENANCE1_SPEC_VERSION = 2;
pub const KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1";
pub const CommandPoolTrimFlagsKHR = CommandPoolTrimFlags;
pub extern fn vkTrimCommandPoolKHR(
device: Device,
commandPool: CommandPool,
flags: CommandPoolTrimFlags.IntType,
) callconv(CallConv) void;
pub inline fn TrimCommandPoolKHR(device: Device, commandPool: CommandPool, flags: CommandPoolTrimFlags) void {
vkTrimCommandPoolKHR(device, commandPool, flags.toInt());
}
pub const KHR_device_group_creation = 1;
pub const KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1;
pub const KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation";
pub const MAX_DEVICE_GROUP_SIZE_KHR = MAX_DEVICE_GROUP_SIZE;
pub const PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
pub const DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
pub extern fn vkEnumeratePhysicalDeviceGroupsKHR(
instance: Instance,
pPhysicalDeviceGroupCount: *u32,
pPhysicalDeviceGroupProperties: ?[*]PhysicalDeviceGroupProperties,
) callconv(CallConv) Result;
pub const EnumeratePhysicalDeviceGroupsKHRResult = struct {
result: Result,
physicalDeviceGroupProperties: []PhysicalDeviceGroupProperties,
};
pub inline fn EnumeratePhysicalDeviceGroupsKHR(instance: Instance, physicalDeviceGroupProperties: []PhysicalDeviceGroupProperties) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INITIALIZATION_FAILED,VK_UNDOCUMENTED_ERROR}!EnumeratePhysicalDeviceGroupsKHRResult {
var returnValues: EnumeratePhysicalDeviceGroupsKHRResult = undefined;
var physicalDeviceGroupCount: u32 = @intCast(u32, physicalDeviceGroupProperties.len);
const result = vkEnumeratePhysicalDeviceGroupsKHR(instance, &physicalDeviceGroupCount, physicalDeviceGroupProperties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INITIALIZATION_FAILED => error.VK_INITIALIZATION_FAILED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.physicalDeviceGroupProperties = physicalDeviceGroupProperties[0..physicalDeviceGroupCount];
returnValues.result = result;
return returnValues;
}
pub inline fn EnumeratePhysicalDeviceGroupsCountKHR(instance: Instance) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INITIALIZATION_FAILED,VK_UNDOCUMENTED_ERROR}!u32 {
var out_physicalDeviceGroupCount: u32 = undefined;
const result = vkEnumeratePhysicalDeviceGroupsKHR(instance, &out_physicalDeviceGroupCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INITIALIZATION_FAILED => error.VK_INITIALIZATION_FAILED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_physicalDeviceGroupCount;
}
pub const KHR_external_memory_capabilities = 1;
pub const KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1;
pub const KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities";
pub const LUID_SIZE_KHR = LUID_SIZE;
pub const ExternalMemoryHandleTypeFlagsKHR = ExternalMemoryHandleTypeFlags;
pub const ExternalMemoryFeatureFlagsKHR = ExternalMemoryFeatureFlags;
pub const ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
pub const PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
pub const ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
pub const PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
pub const ExternalBufferPropertiesKHR = ExternalBufferProperties;
pub const PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
pub extern fn vkGetPhysicalDeviceExternalBufferPropertiesKHR(
physicalDevice: PhysicalDevice,
pExternalBufferInfo: *const PhysicalDeviceExternalBufferInfo,
pExternalBufferProperties: *ExternalBufferProperties,
) callconv(CallConv) void;
pub inline fn GetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice: PhysicalDevice, externalBufferInfo: PhysicalDeviceExternalBufferInfo) ExternalBufferProperties {
var out_externalBufferProperties: ExternalBufferProperties = undefined;
vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, &externalBufferInfo, &out_externalBufferProperties);
return out_externalBufferProperties;
}
pub const KHR_external_memory = 1;
pub const KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1;
pub const KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory";
pub const QUEUE_FAMILY_EXTERNAL_KHR = QUEUE_FAMILY_EXTERNAL;
pub const ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
pub const ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
pub const ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
pub const KHR_external_memory_fd = 1;
pub const KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1;
pub const KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd";
pub const ImportMemoryFdInfoKHR = extern struct {
sType: StructureType = .IMPORT_MEMORY_FD_INFO_KHR,
pNext: ?*const anyopaque = null,
handleType: ExternalMemoryHandleTypeFlags align(4) = ExternalMemoryHandleTypeFlags{},
fd: c_int,
};
pub const MemoryFdPropertiesKHR = extern struct {
sType: StructureType = .MEMORY_FD_PROPERTIES_KHR,
pNext: ?*anyopaque = null,
memoryTypeBits: u32,
};
pub const MemoryGetFdInfoKHR = extern struct {
sType: StructureType = .MEMORY_GET_FD_INFO_KHR,
pNext: ?*const anyopaque = null,
memory: DeviceMemory,
handleType: ExternalMemoryHandleTypeFlags align(4),
};
pub extern fn vkGetMemoryFdKHR(
device: Device,
pGetFdInfo: *const MemoryGetFdInfoKHR,
pFd: *c_int,
) callconv(CallConv) Result;
pub extern fn vkGetMemoryFdPropertiesKHR(
device: Device,
handleType: ExternalMemoryHandleTypeFlags.IntType,
fd: c_int,
pMemoryFdProperties: *MemoryFdPropertiesKHR,
) callconv(CallConv) Result;
pub inline fn GetMemoryFdKHR(device: Device, getFdInfo: MemoryGetFdInfoKHR) error{VK_TOO_MANY_OBJECTS,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!c_int {
var out_fd: c_int = undefined;
const result = vkGetMemoryFdKHR(device, &getFdInfo, &out_fd);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_fd;
}
pub inline fn GetMemoryFdPropertiesKHR(device: Device, handleType: ExternalMemoryHandleTypeFlags, fd: c_int) error{VK_INVALID_EXTERNAL_HANDLE,VK_UNDOCUMENTED_ERROR}!MemoryFdPropertiesKHR {
var out_memoryFdProperties: MemoryFdPropertiesKHR = undefined;
const result = vkGetMemoryFdPropertiesKHR(device, handleType.toInt(), fd, &out_memoryFdProperties);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_INVALID_EXTERNAL_HANDLE => error.VK_INVALID_EXTERNAL_HANDLE,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_memoryFdProperties;
}
pub const KHR_external_semaphore_capabilities = 1;
pub const KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1;
pub const KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities";
pub const ExternalSemaphoreHandleTypeFlagsKHR = ExternalSemaphoreHandleTypeFlags;
pub const ExternalSemaphoreFeatureFlagsKHR = ExternalSemaphoreFeatureFlags;
pub const PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
pub const ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
pub extern fn vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
physicalDevice: PhysicalDevice,
pExternalSemaphoreInfo: *const PhysicalDeviceExternalSemaphoreInfo,
pExternalSemaphoreProperties: *ExternalSemaphoreProperties,
) callconv(CallConv) void;
pub inline fn GetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice: PhysicalDevice, externalSemaphoreInfo: PhysicalDeviceExternalSemaphoreInfo) ExternalSemaphoreProperties {
var out_externalSemaphoreProperties: ExternalSemaphoreProperties = undefined;
vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, &externalSemaphoreInfo, &out_externalSemaphoreProperties);
return out_externalSemaphoreProperties;
}
pub const KHR_external_semaphore = 1;
pub const KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1;
pub const KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore";
pub const SemaphoreImportFlagsKHR = SemaphoreImportFlags;
pub const ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
pub const KHR_external_semaphore_fd = 1;
pub const KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1;
pub const KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd";
pub const ImportSemaphoreFdInfoKHR = extern struct {
sType: StructureType = .IMPORT_SEMAPHORE_FD_INFO_KHR,
pNext: ?*const anyopaque = null,
semaphore: Semaphore,
flags: SemaphoreImportFlags align(4) = SemaphoreImportFlags{},
handleType: ExternalSemaphoreHandleTypeFlags align(4),
fd: c_int,
};
pub const SemaphoreGetFdInfoKHR = extern struct {
sType: StructureType = .SEMAPHORE_GET_FD_INFO_KHR,
pNext: ?*const anyopaque = null,
semaphore: Semaphore,
handleType: ExternalSemaphoreHandleTypeFlags align(4),
};
pub extern fn vkImportSemaphoreFdKHR(
device: Device,
pImportSemaphoreFdInfo: *const ImportSemaphoreFdInfoKHR,
) callconv(CallConv) Result;
pub extern fn vkGetSemaphoreFdKHR(
device: Device,
pGetFdInfo: *const SemaphoreGetFdInfoKHR,
pFd: *c_int,
) callconv(CallConv) Result;
pub inline fn ImportSemaphoreFdKHR(device: Device, importSemaphoreFdInfo: ImportSemaphoreFdInfoKHR) error{VK_OUT_OF_HOST_MEMORY,VK_INVALID_EXTERNAL_HANDLE,VK_UNDOCUMENTED_ERROR}!void {
const result = vkImportSemaphoreFdKHR(device, &importSemaphoreFdInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_INVALID_EXTERNAL_HANDLE => error.VK_INVALID_EXTERNAL_HANDLE,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn GetSemaphoreFdKHR(device: Device, getFdInfo: SemaphoreGetFdInfoKHR) error{VK_TOO_MANY_OBJECTS,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!c_int {
var out_fd: c_int = undefined;
const result = vkGetSemaphoreFdKHR(device, &getFdInfo, &out_fd);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_fd;
}
pub const KHR_push_descriptor = 1;
pub const KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2;
pub const KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor";
pub const PhysicalDevicePushDescriptorPropertiesKHR = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
pNext: ?*anyopaque = null,
maxPushDescriptors: u32,
};
pub extern fn vkCmdPushDescriptorSetKHR(
commandBuffer: CommandBuffer,
pipelineBindPoint: PipelineBindPoint,
layout: PipelineLayout,
set: u32,
descriptorWriteCount: u32,
pDescriptorWrites: [*]const WriteDescriptorSet,
) callconv(CallConv) void;
pub extern fn vkCmdPushDescriptorSetWithTemplateKHR(
commandBuffer: CommandBuffer,
descriptorUpdateTemplate: DescriptorUpdateTemplate,
layout: PipelineLayout,
set: u32,
pData: ?*const anyopaque,
) callconv(CallConv) void;
pub inline fn CmdPushDescriptorSetKHR(commandBuffer: CommandBuffer, pipelineBindPoint: PipelineBindPoint, layout: PipelineLayout, set: u32, descriptorWrites: []const WriteDescriptorSet) void {
vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, @intCast(u32, descriptorWrites.len), descriptorWrites.ptr);
}
pub const CmdPushDescriptorSetWithTemplateKHR = vkCmdPushDescriptorSetWithTemplateKHR;
pub const KHR_shader_float16_int8 = 1;
pub const KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1;
pub const KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8";
pub const PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
pub const PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
pub const KHR_16bit_storage = 1;
pub const KHR_16BIT_STORAGE_SPEC_VERSION = 1;
pub const KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage";
pub const PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
pub const KHR_incremental_present = 1;
pub const KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1;
pub const KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present";
pub const RectLayerKHR = extern struct {
offset: Offset2D,
extent: Extent2D,
layer: u32,
};
pub const PresentRegionKHR = extern struct {
rectangleCount: u32 = 0,
pRectangles: ?[*]const RectLayerKHR = null,
};
pub const PresentRegionsKHR = extern struct {
sType: StructureType = .PRESENT_REGIONS_KHR,
pNext: ?*const anyopaque = null,
swapchainCount: u32,
pRegions: ?[*]const PresentRegionKHR = null,
};
pub const KHR_descriptor_update_template = 1;
pub const DescriptorUpdateTemplateKHR = DescriptorUpdateTemplate;
pub const KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1;
pub const KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template";
pub const DescriptorUpdateTemplateTypeKHR = DescriptorUpdateTemplateType;
pub const DescriptorUpdateTemplateCreateFlagsKHR = DescriptorUpdateTemplateCreateFlags;
pub const DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
pub const DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
pub extern fn vkCreateDescriptorUpdateTemplateKHR(
device: Device,
pCreateInfo: *const DescriptorUpdateTemplateCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pDescriptorUpdateTemplate: *DescriptorUpdateTemplate,
) callconv(CallConv) Result;
pub extern fn vkDestroyDescriptorUpdateTemplateKHR(
device: Device,
descriptorUpdateTemplate: DescriptorUpdateTemplate,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkUpdateDescriptorSetWithTemplateKHR(
device: Device,
descriptorSet: DescriptorSet,
descriptorUpdateTemplate: DescriptorUpdateTemplate,
pData: ?*const anyopaque,
) callconv(CallConv) void;
pub inline fn CreateDescriptorUpdateTemplateKHR(device: Device, createInfo: DescriptorUpdateTemplateCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!DescriptorUpdateTemplate {
var out_descriptorUpdateTemplate: DescriptorUpdateTemplate = undefined;
const result = vkCreateDescriptorUpdateTemplateKHR(device, &createInfo, pAllocator, &out_descriptorUpdateTemplate);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_descriptorUpdateTemplate;
}
pub const DestroyDescriptorUpdateTemplateKHR = vkDestroyDescriptorUpdateTemplateKHR;
pub const UpdateDescriptorSetWithTemplateKHR = vkUpdateDescriptorSetWithTemplateKHR;
pub const KHR_imageless_framebuffer = 1;
pub const KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1;
pub const KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer";
pub const PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures;
pub const FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo;
pub const FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo;
pub const RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo;
pub const KHR_create_renderpass2 = 1;
pub const KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1;
pub const KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2";
pub const RenderPassCreateInfo2KHR = RenderPassCreateInfo2;
pub const AttachmentDescription2KHR = AttachmentDescription2;
pub const AttachmentReference2KHR = AttachmentReference2;
pub const SubpassDescription2KHR = SubpassDescription2;
pub const SubpassDependency2KHR = SubpassDependency2;
pub const SubpassBeginInfoKHR = SubpassBeginInfo;
pub const SubpassEndInfoKHR = SubpassEndInfo;
pub extern fn vkCreateRenderPass2KHR(
device: Device,
pCreateInfo: *const RenderPassCreateInfo2,
pAllocator: ?*const AllocationCallbacks,
pRenderPass: *RenderPass,
) callconv(CallConv) Result;
pub extern fn vkCmdBeginRenderPass2KHR(
commandBuffer: CommandBuffer,
pRenderPassBegin: *const RenderPassBeginInfo,
pSubpassBeginInfo: *const SubpassBeginInfo,
) callconv(CallConv) void;
pub extern fn vkCmdNextSubpass2KHR(
commandBuffer: CommandBuffer,
pSubpassBeginInfo: *const SubpassBeginInfo,
pSubpassEndInfo: *const SubpassEndInfo,
) callconv(CallConv) void;
pub extern fn vkCmdEndRenderPass2KHR(
commandBuffer: CommandBuffer,
pSubpassEndInfo: *const SubpassEndInfo,
) callconv(CallConv) void;
pub inline fn CreateRenderPass2KHR(device: Device, createInfo: RenderPassCreateInfo2, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!RenderPass {
var out_renderPass: RenderPass = undefined;
const result = vkCreateRenderPass2KHR(device, &createInfo, pAllocator, &out_renderPass);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_renderPass;
}
pub inline fn CmdBeginRenderPass2KHR(commandBuffer: CommandBuffer, renderPassBegin: RenderPassBeginInfo, subpassBeginInfo: SubpassBeginInfo) void {
vkCmdBeginRenderPass2KHR(commandBuffer, &renderPassBegin, &subpassBeginInfo);
}
pub inline fn CmdNextSubpass2KHR(commandBuffer: CommandBuffer, subpassBeginInfo: SubpassBeginInfo, subpassEndInfo: SubpassEndInfo) void {
vkCmdNextSubpass2KHR(commandBuffer, &subpassBeginInfo, &subpassEndInfo);
}
pub inline fn CmdEndRenderPass2KHR(commandBuffer: CommandBuffer, subpassEndInfo: SubpassEndInfo) void {
vkCmdEndRenderPass2KHR(commandBuffer, &subpassEndInfo);
}
pub const KHR_shared_presentable_image = 1;
pub const KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1;
pub const KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image";
pub const SharedPresentSurfaceCapabilitiesKHR = extern struct {
sType: StructureType = .SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
pNext: ?*anyopaque = null,
sharedPresentSupportedUsageFlags: ImageUsageFlags align(4) = ImageUsageFlags{},
};
pub extern fn vkGetSwapchainStatusKHR(
device: Device,
swapchain: SwapchainKHR,
) callconv(CallConv) Result;
pub inline fn GetSwapchainStatusKHR(device: Device, swapchain: SwapchainKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_OUT_OF_DATE_KHR,VK_SURFACE_LOST_KHR,VK_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT,VK_UNDOCUMENTED_ERROR}!Result {
const result = vkGetSwapchainStatusKHR(device, swapchain);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
.ERROR_OUT_OF_DATE_KHR => error.VK_OUT_OF_DATE_KHR,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT => error.VK_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return result;
}
pub const KHR_external_fence_capabilities = 1;
pub const KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1;
pub const KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities";
pub const ExternalFenceHandleTypeFlagsKHR = ExternalFenceHandleTypeFlags;
pub const ExternalFenceFeatureFlagsKHR = ExternalFenceFeatureFlags;
pub const PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
pub const ExternalFencePropertiesKHR = ExternalFenceProperties;
pub extern fn vkGetPhysicalDeviceExternalFencePropertiesKHR(
physicalDevice: PhysicalDevice,
pExternalFenceInfo: *const PhysicalDeviceExternalFenceInfo,
pExternalFenceProperties: *ExternalFenceProperties,
) callconv(CallConv) void;
pub inline fn GetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice: PhysicalDevice, externalFenceInfo: PhysicalDeviceExternalFenceInfo) ExternalFenceProperties {
var out_externalFenceProperties: ExternalFenceProperties = undefined;
vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, &externalFenceInfo, &out_externalFenceProperties);
return out_externalFenceProperties;
}
pub const KHR_external_fence = 1;
pub const KHR_EXTERNAL_FENCE_SPEC_VERSION = 1;
pub const KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence";
pub const FenceImportFlagsKHR = FenceImportFlags;
pub const ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
pub const KHR_external_fence_fd = 1;
pub const KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1;
pub const KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd";
pub const ImportFenceFdInfoKHR = extern struct {
sType: StructureType = .IMPORT_FENCE_FD_INFO_KHR,
pNext: ?*const anyopaque = null,
fence: Fence,
flags: FenceImportFlags align(4) = FenceImportFlags{},
handleType: ExternalFenceHandleTypeFlags align(4),
fd: c_int,
};
pub const FenceGetFdInfoKHR = extern struct {
sType: StructureType = .FENCE_GET_FD_INFO_KHR,
pNext: ?*const anyopaque = null,
fence: Fence,
handleType: ExternalFenceHandleTypeFlags align(4),
};
pub extern fn vkImportFenceFdKHR(
device: Device,
pImportFenceFdInfo: *const ImportFenceFdInfoKHR,
) callconv(CallConv) Result;
pub extern fn vkGetFenceFdKHR(
device: Device,
pGetFdInfo: *const FenceGetFdInfoKHR,
pFd: *c_int,
) callconv(CallConv) Result;
pub inline fn ImportFenceFdKHR(device: Device, importFenceFdInfo: ImportFenceFdInfoKHR) error{VK_OUT_OF_HOST_MEMORY,VK_INVALID_EXTERNAL_HANDLE,VK_UNDOCUMENTED_ERROR}!void {
const result = vkImportFenceFdKHR(device, &importFenceFdInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_INVALID_EXTERNAL_HANDLE => error.VK_INVALID_EXTERNAL_HANDLE,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn GetFenceFdKHR(device: Device, getFdInfo: FenceGetFdInfoKHR) error{VK_TOO_MANY_OBJECTS,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!c_int {
var out_fd: c_int = undefined;
const result = vkGetFenceFdKHR(device, &getFdInfo, &out_fd);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_fd;
}
pub const KHR_performance_query = 1;
pub const KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1;
pub const KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query";
pub const PerformanceCounterUnitKHR = enum(i32) {
GENERIC = 0,
PERCENTAGE = 1,
NANOSECONDS = 2,
BYTES = 3,
BYTES_PER_SECOND = 4,
KELVIN = 5,
WATTS = 6,
VOLTS = 7,
AMPS = 8,
HERTZ = 9,
CYCLES = 10,
_,
};
pub const PerformanceCounterScopeKHR = enum(i32) {
COMMAND_BUFFER = 0,
RENDER_PASS = 1,
COMMAND = 2,
_,
const Self = @This();
pub const QUERY_SCOPE_COMMAND_BUFFER = Self.COMMAND_BUFFER;
pub const QUERY_SCOPE_RENDER_PASS = Self.RENDER_PASS;
pub const QUERY_SCOPE_COMMAND = Self.COMMAND;
};
pub const PerformanceCounterStorageKHR = enum(i32) {
INT32 = 0,
INT64 = 1,
UINT32 = 2,
UINT64 = 3,
FLOAT32 = 4,
FLOAT64 = 5,
_,
};
pub const PerformanceCounterDescriptionFlagsKHR = packed struct {
performanceImpacting: bool = false,
concurrentlyImpacted: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const AcquireProfilingLockFlagsKHR = packed struct {
__reserved_bit_00: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const PhysicalDevicePerformanceQueryFeaturesKHR = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,
pNext: ?*anyopaque = null,
performanceCounterQueryPools: Bool32,
performanceCounterMultipleQueryPools: Bool32,
};
pub const PhysicalDevicePerformanceQueryPropertiesKHR = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,
pNext: ?*anyopaque = null,
allowCommandBufferQueryCopies: Bool32,
};
pub const PerformanceCounterKHR = extern struct {
sType: StructureType = .PERFORMANCE_COUNTER_KHR,
pNext: ?*const anyopaque = null,
unit: PerformanceCounterUnitKHR,
scope: PerformanceCounterScopeKHR,
storage: PerformanceCounterStorageKHR,
uuid: [UUID_SIZE]u8,
};
pub const PerformanceCounterDescriptionKHR = extern struct {
sType: StructureType = .PERFORMANCE_COUNTER_DESCRIPTION_KHR,
pNext: ?*const anyopaque = null,
flags: PerformanceCounterDescriptionFlagsKHR align(4) = PerformanceCounterDescriptionFlagsKHR{},
name: [MAX_DESCRIPTION_SIZE-1:0]u8,
category: [MAX_DESCRIPTION_SIZE-1:0]u8,
description: [MAX_DESCRIPTION_SIZE-1:0]u8,
};
pub const QueryPoolPerformanceCreateInfoKHR = extern struct {
sType: StructureType = .QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,
pNext: ?*const anyopaque = null,
queueFamilyIndex: u32,
counterIndexCount: u32,
pCounterIndices: [*]const u32,
};
pub const PerformanceCounterResultKHR = extern union {
int32: i32,
int64: i64,
uint32: u32,
uint64: u64,
float32: f32,
float64: f64,
};
pub const AcquireProfilingLockInfoKHR = extern struct {
sType: StructureType = .ACQUIRE_PROFILING_LOCK_INFO_KHR,
pNext: ?*const anyopaque = null,
flags: AcquireProfilingLockFlagsKHR align(4) = AcquireProfilingLockFlagsKHR{},
timeout: u64,
};
pub const PerformanceQuerySubmitInfoKHR = extern struct {
sType: StructureType = .PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
pNext: ?*const anyopaque = null,
counterPassIndex: u32,
};
pub extern fn vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
physicalDevice: PhysicalDevice,
queueFamilyIndex: u32,
pCounterCount: *u32,
pCounters: ?[*]PerformanceCounterKHR,
pCounterDescriptions: ?[*]PerformanceCounterDescriptionKHR,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
physicalDevice: PhysicalDevice,
pPerformanceQueryCreateInfo: *const QueryPoolPerformanceCreateInfoKHR,
pNumPasses: *u32,
) callconv(CallConv) void;
pub extern fn vkAcquireProfilingLockKHR(
device: Device,
pInfo: *const AcquireProfilingLockInfoKHR,
) callconv(CallConv) Result;
pub extern fn vkReleaseProfilingLockKHR(device: Device) callconv(CallConv) void;
pub const EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRResult = struct {
result: Result,
counters: []PerformanceCounterKHR,
counterDescriptions: []PerformanceCounterDescriptionKHR,
};
pub inline fn EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice: PhysicalDevice, queueFamilyIndex: u32, counters: []PerformanceCounterKHR, counterDescriptions: []PerformanceCounterDescriptionKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INITIALIZATION_FAILED,VK_UNDOCUMENTED_ERROR}!EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRResult {
var returnValues: EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRResult = undefined;
var counterCount: u32 = @intCast(u32, counters.len);
assert(counterDescriptions.len >= counters.len);
const result = vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, &counterCount, counters.ptr, counterDescriptions.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INITIALIZATION_FAILED => error.VK_INITIALIZATION_FAILED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.counters = counters[0..counterCount];
returnValues.counterDescriptions = counterDescriptions[0..counterCount];
returnValues.result = result;
return returnValues;
}
pub inline fn EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersCountKHR(physicalDevice: PhysicalDevice, queueFamilyIndex: u32) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INITIALIZATION_FAILED,VK_UNDOCUMENTED_ERROR}!u32 {
var out_counterCount: u32 = undefined;
const result = vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, &out_counterCount, null, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INITIALIZATION_FAILED => error.VK_INITIALIZATION_FAILED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_counterCount;
}
pub inline fn GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice: PhysicalDevice, performanceQueryCreateInfo: QueryPoolPerformanceCreateInfoKHR) u32 {
var out_numPasses: u32 = undefined;
vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, &performanceQueryCreateInfo, &out_numPasses);
return out_numPasses;
}
pub inline fn AcquireProfilingLockKHR(device: Device, info: AcquireProfilingLockInfoKHR) error{VK_TIMEOUT,VK_UNDOCUMENTED_ERROR}!void {
const result = vkAcquireProfilingLockKHR(device, &info);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.TIMEOUT => error.VK_TIMEOUT,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub const ReleaseProfilingLockKHR = vkReleaseProfilingLockKHR;
pub const KHR_maintenance2 = 1;
pub const KHR_MAINTENANCE2_SPEC_VERSION = 1;
pub const KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2";
pub const PointClippingBehaviorKHR = PointClippingBehavior;
pub const TessellationDomainOriginKHR = TessellationDomainOrigin;
pub const PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
pub const RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
pub const InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
pub const ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
pub const PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo;
pub const KHR_get_surface_capabilities2 = 1;
pub const KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1;
pub const KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2";
pub const PhysicalDeviceSurfaceInfo2KHR = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
pNext: ?*const anyopaque = null,
surface: SurfaceKHR,
};
pub const SurfaceCapabilities2KHR = extern struct {
sType: StructureType = .SURFACE_CAPABILITIES_2_KHR,
pNext: ?*anyopaque = null,
surfaceCapabilities: SurfaceCapabilitiesKHR,
};
pub const SurfaceFormat2KHR = extern struct {
sType: StructureType = .SURFACE_FORMAT_2_KHR,
pNext: ?*anyopaque = null,
surfaceFormat: SurfaceFormatKHR,
};
pub extern fn vkGetPhysicalDeviceSurfaceCapabilities2KHR(
physicalDevice: PhysicalDevice,
pSurfaceInfo: *const PhysicalDeviceSurfaceInfo2KHR,
pSurfaceCapabilities: *SurfaceCapabilities2KHR,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDeviceSurfaceFormats2KHR(
physicalDevice: PhysicalDevice,
pSurfaceInfo: *const PhysicalDeviceSurfaceInfo2KHR,
pSurfaceFormatCount: *u32,
pSurfaceFormats: ?[*]SurfaceFormat2KHR,
) callconv(CallConv) Result;
pub inline fn GetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice: PhysicalDevice, surfaceInfo: PhysicalDeviceSurfaceInfo2KHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!SurfaceCapabilities2KHR {
var out_surfaceCapabilities: SurfaceCapabilities2KHR = undefined;
const result = vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, &surfaceInfo, &out_surfaceCapabilities);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_surfaceCapabilities;
}
pub const GetPhysicalDeviceSurfaceFormats2KHRResult = struct {
result: Result,
surfaceFormats: []SurfaceFormat2KHR,
};
pub inline fn GetPhysicalDeviceSurfaceFormats2KHR(physicalDevice: PhysicalDevice, surfaceInfo: PhysicalDeviceSurfaceInfo2KHR, surfaceFormats: []SurfaceFormat2KHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!GetPhysicalDeviceSurfaceFormats2KHRResult {
var returnValues: GetPhysicalDeviceSurfaceFormats2KHRResult = undefined;
var surfaceFormatCount: u32 = @intCast(u32, surfaceFormats.len);
const result = vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, &surfaceInfo, &surfaceFormatCount, surfaceFormats.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.surfaceFormats = surfaceFormats[0..surfaceFormatCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPhysicalDeviceSurfaceFormats2CountKHR(physicalDevice: PhysicalDevice, surfaceInfo: PhysicalDeviceSurfaceInfo2KHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!u32 {
var out_surfaceFormatCount: u32 = undefined;
const result = vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, &surfaceInfo, &out_surfaceFormatCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_surfaceFormatCount;
}
pub const KHR_variable_pointers = 1;
pub const KHR_VARIABLE_POINTERS_SPEC_VERSION = 1;
pub const KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers";
pub const PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
pub const PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
pub const KHR_get_display_properties2 = 1;
pub const KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1;
pub const KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2";
pub const DisplayProperties2KHR = extern struct {
sType: StructureType = .DISPLAY_PROPERTIES_2_KHR,
pNext: ?*anyopaque = null,
displayProperties: DisplayPropertiesKHR,
};
pub const DisplayPlaneProperties2KHR = extern struct {
sType: StructureType = .DISPLAY_PLANE_PROPERTIES_2_KHR,
pNext: ?*anyopaque = null,
displayPlaneProperties: DisplayPlanePropertiesKHR,
};
pub const DisplayModeProperties2KHR = extern struct {
sType: StructureType = .DISPLAY_MODE_PROPERTIES_2_KHR,
pNext: ?*anyopaque = null,
displayModeProperties: DisplayModePropertiesKHR,
};
pub const DisplayPlaneInfo2KHR = extern struct {
sType: StructureType = .DISPLAY_PLANE_INFO_2_KHR,
pNext: ?*const anyopaque = null,
mode: DisplayModeKHR,
planeIndex: u32,
};
pub const DisplayPlaneCapabilities2KHR = extern struct {
sType: StructureType = .DISPLAY_PLANE_CAPABILITIES_2_KHR,
pNext: ?*anyopaque = null,
capabilities: DisplayPlaneCapabilitiesKHR,
};
pub extern fn vkGetPhysicalDeviceDisplayProperties2KHR(
physicalDevice: PhysicalDevice,
pPropertyCount: *u32,
pProperties: ?[*]DisplayProperties2KHR,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
physicalDevice: PhysicalDevice,
pPropertyCount: *u32,
pProperties: ?[*]DisplayPlaneProperties2KHR,
) callconv(CallConv) Result;
pub extern fn vkGetDisplayModeProperties2KHR(
physicalDevice: PhysicalDevice,
display: DisplayKHR,
pPropertyCount: *u32,
pProperties: ?[*]DisplayModeProperties2KHR,
) callconv(CallConv) Result;
pub extern fn vkGetDisplayPlaneCapabilities2KHR(
physicalDevice: PhysicalDevice,
pDisplayPlaneInfo: *const DisplayPlaneInfo2KHR,
pCapabilities: *DisplayPlaneCapabilities2KHR,
) callconv(CallConv) Result;
pub const GetPhysicalDeviceDisplayProperties2KHRResult = struct {
result: Result,
properties: []DisplayProperties2KHR,
};
pub inline fn GetPhysicalDeviceDisplayProperties2KHR(physicalDevice: PhysicalDevice, properties: []DisplayProperties2KHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetPhysicalDeviceDisplayProperties2KHRResult {
var returnValues: GetPhysicalDeviceDisplayProperties2KHRResult = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
const result = vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, &propertyCount, properties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.properties = properties[0..propertyCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPhysicalDeviceDisplayProperties2CountKHR(physicalDevice: PhysicalDevice) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_propertyCount: u32 = undefined;
const result = vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, &out_propertyCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_propertyCount;
}
pub const GetPhysicalDeviceDisplayPlaneProperties2KHRResult = struct {
result: Result,
properties: []DisplayPlaneProperties2KHR,
};
pub inline fn GetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice: PhysicalDevice, properties: []DisplayPlaneProperties2KHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetPhysicalDeviceDisplayPlaneProperties2KHRResult {
var returnValues: GetPhysicalDeviceDisplayPlaneProperties2KHRResult = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
const result = vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, &propertyCount, properties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.properties = properties[0..propertyCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPhysicalDeviceDisplayPlaneProperties2CountKHR(physicalDevice: PhysicalDevice) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_propertyCount: u32 = undefined;
const result = vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, &out_propertyCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_propertyCount;
}
pub const GetDisplayModeProperties2KHRResult = struct {
result: Result,
properties: []DisplayModeProperties2KHR,
};
pub inline fn GetDisplayModeProperties2KHR(physicalDevice: PhysicalDevice, display: DisplayKHR, properties: []DisplayModeProperties2KHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetDisplayModeProperties2KHRResult {
var returnValues: GetDisplayModeProperties2KHRResult = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
const result = vkGetDisplayModeProperties2KHR(physicalDevice, display, &propertyCount, properties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.properties = properties[0..propertyCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetDisplayModeProperties2CountKHR(physicalDevice: PhysicalDevice, display: DisplayKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_propertyCount: u32 = undefined;
const result = vkGetDisplayModeProperties2KHR(physicalDevice, display, &out_propertyCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_propertyCount;
}
pub inline fn GetDisplayPlaneCapabilities2KHR(physicalDevice: PhysicalDevice, displayPlaneInfo: DisplayPlaneInfo2KHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!DisplayPlaneCapabilities2KHR {
var out_capabilities: DisplayPlaneCapabilities2KHR = undefined;
const result = vkGetDisplayPlaneCapabilities2KHR(physicalDevice, &displayPlaneInfo, &out_capabilities);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_capabilities;
}
pub const KHR_dedicated_allocation = 1;
pub const KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3;
pub const KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation";
pub const MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
pub const MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
pub const KHR_storage_buffer_storage_class = 1;
pub const KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1;
pub const KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class";
pub const KHR_relaxed_block_layout = 1;
pub const KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1;
pub const KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout";
pub const KHR_get_memory_requirements2 = 1;
pub const KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1;
pub const KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2";
pub const BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
pub const ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
pub const ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
pub const SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
pub extern fn vkGetImageMemoryRequirements2KHR(
device: Device,
pInfo: *const ImageMemoryRequirementsInfo2,
pMemoryRequirements: *MemoryRequirements2,
) callconv(CallConv) void;
pub extern fn vkGetBufferMemoryRequirements2KHR(
device: Device,
pInfo: *const BufferMemoryRequirementsInfo2,
pMemoryRequirements: *MemoryRequirements2,
) callconv(CallConv) void;
pub extern fn vkGetImageSparseMemoryRequirements2KHR(
device: Device,
pInfo: *const ImageSparseMemoryRequirementsInfo2,
pSparseMemoryRequirementCount: *u32,
pSparseMemoryRequirements: ?[*]SparseImageMemoryRequirements2,
) callconv(CallConv) void;
pub inline fn GetImageMemoryRequirements2KHR(device: Device, info: ImageMemoryRequirementsInfo2) MemoryRequirements2 {
var out_memoryRequirements: MemoryRequirements2 = undefined;
vkGetImageMemoryRequirements2KHR(device, &info, &out_memoryRequirements);
return out_memoryRequirements;
}
pub inline fn GetBufferMemoryRequirements2KHR(device: Device, info: BufferMemoryRequirementsInfo2) MemoryRequirements2 {
var out_memoryRequirements: MemoryRequirements2 = undefined;
vkGetBufferMemoryRequirements2KHR(device, &info, &out_memoryRequirements);
return out_memoryRequirements;
}
pub inline fn GetImageSparseMemoryRequirements2KHR(device: Device, info: ImageSparseMemoryRequirementsInfo2, sparseMemoryRequirements: []SparseImageMemoryRequirements2) []SparseImageMemoryRequirements2 {
var out_sparseMemoryRequirements: []SparseImageMemoryRequirements2 = undefined;
var sparseMemoryRequirementCount: u32 = @intCast(u32, sparseMemoryRequirements.len);
vkGetImageSparseMemoryRequirements2KHR(device, &info, &sparseMemoryRequirementCount, sparseMemoryRequirements.ptr);
out_sparseMemoryRequirements = sparseMemoryRequirements[0..sparseMemoryRequirementCount];
return out_sparseMemoryRequirements;
}
pub inline fn GetImageSparseMemoryRequirements2CountKHR(device: Device, info: ImageSparseMemoryRequirementsInfo2) u32 {
var out_sparseMemoryRequirementCount: u32 = undefined;
vkGetImageSparseMemoryRequirements2KHR(device, &info, &out_sparseMemoryRequirementCount, null);
return out_sparseMemoryRequirementCount;
}
pub const KHR_image_format_list = 1;
pub const KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1;
pub const KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list";
pub const ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo;
pub const KHR_sampler_ycbcr_conversion = 1;
pub const SamplerYcbcrConversionKHR = SamplerYcbcrConversion;
pub const KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14;
pub const KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion";
pub const SamplerYcbcrModelConversionKHR = SamplerYcbcrModelConversion;
pub const SamplerYcbcrRangeKHR = SamplerYcbcrRange;
pub const ChromaLocationKHR = ChromaLocation;
pub const SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
pub const SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
pub const BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
pub const ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
pub const PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures;
pub const SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties;
pub extern fn vkCreateSamplerYcbcrConversionKHR(
device: Device,
pCreateInfo: *const SamplerYcbcrConversionCreateInfo,
pAllocator: ?*const AllocationCallbacks,
pYcbcrConversion: *SamplerYcbcrConversion,
) callconv(CallConv) Result;
pub extern fn vkDestroySamplerYcbcrConversionKHR(
device: Device,
ycbcrConversion: SamplerYcbcrConversion,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub inline fn CreateSamplerYcbcrConversionKHR(device: Device, createInfo: SamplerYcbcrConversionCreateInfo, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!SamplerYcbcrConversion {
var out_ycbcrConversion: SamplerYcbcrConversion = undefined;
const result = vkCreateSamplerYcbcrConversionKHR(device, &createInfo, pAllocator, &out_ycbcrConversion);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_ycbcrConversion;
}
pub const DestroySamplerYcbcrConversionKHR = vkDestroySamplerYcbcrConversionKHR;
pub const KHR_bind_memory2 = 1;
pub const KHR_BIND_MEMORY_2_SPEC_VERSION = 1;
pub const KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2";
pub const BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
pub const BindImageMemoryInfoKHR = BindImageMemoryInfo;
pub extern fn vkBindBufferMemory2KHR(
device: Device,
bindInfoCount: u32,
pBindInfos: [*]const BindBufferMemoryInfo,
) callconv(CallConv) Result;
pub extern fn vkBindImageMemory2KHR(
device: Device,
bindInfoCount: u32,
pBindInfos: [*]const BindImageMemoryInfo,
) callconv(CallConv) Result;
pub inline fn BindBufferMemory2KHR(device: Device, bindInfos: []const BindBufferMemoryInfo) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INVALID_OPAQUE_CAPTURE_ADDRESS,VK_UNDOCUMENTED_ERROR}!void {
const result = vkBindBufferMemory2KHR(device, @intCast(u32, bindInfos.len), bindInfos.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS => error.VK_INVALID_OPAQUE_CAPTURE_ADDRESS,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn BindImageMemory2KHR(device: Device, bindInfos: []const BindImageMemoryInfo) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkBindImageMemory2KHR(device, @intCast(u32, bindInfos.len), bindInfos.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub const KHR_maintenance3 = 1;
pub const KHR_MAINTENANCE3_SPEC_VERSION = 1;
pub const KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3";
pub const PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
pub const DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
pub extern fn vkGetDescriptorSetLayoutSupportKHR(
device: Device,
pCreateInfo: *const DescriptorSetLayoutCreateInfo,
pSupport: *DescriptorSetLayoutSupport,
) callconv(CallConv) void;
pub inline fn GetDescriptorSetLayoutSupportKHR(device: Device, createInfo: DescriptorSetLayoutCreateInfo) DescriptorSetLayoutSupport {
var out_support: DescriptorSetLayoutSupport = undefined;
vkGetDescriptorSetLayoutSupportKHR(device, &createInfo, &out_support);
return out_support;
}
pub const KHR_draw_indirect_count = 1;
pub const KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1;
pub const KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count";
pub extern fn vkCmdDrawIndirectCountKHR(
commandBuffer: CommandBuffer,
buffer: Buffer,
offset: DeviceSize,
countBuffer: Buffer,
countBufferOffset: DeviceSize,
maxDrawCount: u32,
stride: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDrawIndexedIndirectCountKHR(
commandBuffer: CommandBuffer,
buffer: Buffer,
offset: DeviceSize,
countBuffer: Buffer,
countBufferOffset: DeviceSize,
maxDrawCount: u32,
stride: u32,
) callconv(CallConv) void;
pub const CmdDrawIndirectCountKHR = vkCmdDrawIndirectCountKHR;
pub const CmdDrawIndexedIndirectCountKHR = vkCmdDrawIndexedIndirectCountKHR;
pub const KHR_shader_subgroup_extended_types = 1;
pub const KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1;
pub const KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types";
pub const PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
pub const KHR_8bit_storage = 1;
pub const KHR_8BIT_STORAGE_SPEC_VERSION = 1;
pub const KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage";
pub const PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures;
pub const KHR_shader_atomic_int64 = 1;
pub const KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1;
pub const KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64";
pub const PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features;
pub const KHR_shader_clock = 1;
pub const KHR_SHADER_CLOCK_SPEC_VERSION = 1;
pub const KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock";
pub const PhysicalDeviceShaderClockFeaturesKHR = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,
pNext: ?*anyopaque = null,
shaderSubgroupClock: Bool32,
shaderDeviceClock: Bool32,
};
pub const KHR_driver_properties = 1;
pub const KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1;
pub const KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties";
pub const MAX_DRIVER_NAME_SIZE_KHR = MAX_DRIVER_NAME_SIZE;
pub const MAX_DRIVER_INFO_SIZE_KHR = MAX_DRIVER_INFO_SIZE;
pub const DriverIdKHR = DriverId;
pub const ConformanceVersionKHR = ConformanceVersion;
pub const PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties;
pub const KHR_shader_float_controls = 1;
pub const KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4;
pub const KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls";
pub const ShaderFloatControlsIndependenceKHR = ShaderFloatControlsIndependence;
pub const PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties;
pub const KHR_depth_stencil_resolve = 1;
pub const KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1;
pub const KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve";
pub const ResolveModeFlagsKHR = ResolveModeFlags;
pub const SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve;
pub const PhysicalDeviceDepthStencilResolvePropertiesKHR = PhysicalDeviceDepthStencilResolveProperties;
pub const KHR_swapchain_mutable_format = 1;
pub const KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1;
pub const KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format";
pub const KHR_timeline_semaphore = 1;
pub const KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2;
pub const KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore";
pub const SemaphoreTypeKHR = SemaphoreType;
pub const SemaphoreWaitFlagsKHR = SemaphoreWaitFlags;
pub const PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures;
pub const PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties;
pub const SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo;
pub const TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo;
pub const SemaphoreWaitInfoKHR = SemaphoreWaitInfo;
pub const SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
pub extern fn vkGetSemaphoreCounterValueKHR(
device: Device,
semaphore: Semaphore,
pValue: *u64,
) callconv(CallConv) Result;
pub extern fn vkWaitSemaphoresKHR(
device: Device,
pWaitInfo: *const SemaphoreWaitInfo,
timeout: u64,
) callconv(CallConv) Result;
pub extern fn vkSignalSemaphoreKHR(
device: Device,
pSignalInfo: *const SemaphoreSignalInfo,
) callconv(CallConv) Result;
pub inline fn GetSemaphoreCounterValueKHR(device: Device, semaphore: Semaphore) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!u64 {
var out_value: u64 = undefined;
const result = vkGetSemaphoreCounterValueKHR(device, semaphore, &out_value);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_value;
}
pub inline fn WaitSemaphoresKHR(device: Device, waitInfo: SemaphoreWaitInfo, timeout: u64) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_DEVICE_LOST,VK_UNDOCUMENTED_ERROR}!Result {
const result = vkWaitSemaphoresKHR(device, &waitInfo, timeout);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return result;
}
pub inline fn SignalSemaphoreKHR(device: Device, signalInfo: SemaphoreSignalInfo) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkSignalSemaphoreKHR(device, &signalInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub const KHR_vulkan_memory_model = 1;
pub const KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3;
pub const KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model";
pub const PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures;
pub const KHR_spirv_1_4 = 1;
pub const KHR_SPIRV_1_4_SPEC_VERSION = 1;
pub const KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4";
pub const KHR_surface_protected_capabilities = 1;
pub const KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1;
pub const KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities";
pub const SurfaceProtectedCapabilitiesKHR = extern struct {
sType: StructureType = .SURFACE_PROTECTED_CAPABILITIES_KHR,
pNext: ?*const anyopaque = null,
supportsProtected: Bool32,
};
pub const KHR_separate_depth_stencil_layouts = 1;
pub const KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1;
pub const KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts";
pub const PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
pub const AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout;
pub const AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout;
pub const KHR_uniform_buffer_standard_layout = 1;
pub const KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1;
pub const KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout";
pub const PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = PhysicalDeviceUniformBufferStandardLayoutFeatures;
pub const KHR_buffer_device_address = 1;
pub const KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1;
pub const KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address";
pub const PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures;
pub const BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo;
pub const BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo;
pub const MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo;
pub const DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo;
pub extern fn vkGetBufferDeviceAddressKHR(
device: Device,
pInfo: *const BufferDeviceAddressInfo,
) callconv(CallConv) DeviceAddress;
pub extern fn vkGetBufferOpaqueCaptureAddressKHR(
device: Device,
pInfo: *const BufferDeviceAddressInfo,
) callconv(CallConv) u64;
pub extern fn vkGetDeviceMemoryOpaqueCaptureAddressKHR(
device: Device,
pInfo: *const DeviceMemoryOpaqueCaptureAddressInfo,
) callconv(CallConv) u64;
pub inline fn GetBufferDeviceAddressKHR(device: Device, info: BufferDeviceAddressInfo) DeviceAddress {
const result = vkGetBufferDeviceAddressKHR(device, &info);
return result;
}
pub inline fn GetBufferOpaqueCaptureAddressKHR(device: Device, info: BufferDeviceAddressInfo) u64 {
const result = vkGetBufferOpaqueCaptureAddressKHR(device, &info);
return result;
}
pub inline fn GetDeviceMemoryOpaqueCaptureAddressKHR(device: Device, info: DeviceMemoryOpaqueCaptureAddressInfo) u64 {
const result = vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, &info);
return result;
}
pub const KHR_pipeline_executable_properties = 1;
pub const KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1;
pub const KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties";
pub const PipelineExecutableStatisticFormatKHR = enum(i32) {
BOOL32 = 0,
INT64 = 1,
UINT64 = 2,
FLOAT64 = 3,
_,
};
pub const PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,
pNext: ?*anyopaque = null,
pipelineExecutableInfo: Bool32,
};
pub const PipelineInfoKHR = extern struct {
sType: StructureType = .PIPELINE_INFO_KHR,
pNext: ?*const anyopaque = null,
pipeline: Pipeline,
};
pub const PipelineExecutablePropertiesKHR = extern struct {
sType: StructureType = .PIPELINE_EXECUTABLE_PROPERTIES_KHR,
pNext: ?*anyopaque = null,
stages: ShaderStageFlags align(4),
name: [MAX_DESCRIPTION_SIZE-1:0]u8,
description: [MAX_DESCRIPTION_SIZE-1:0]u8,
subgroupSize: u32,
};
pub const PipelineExecutableInfoKHR = extern struct {
sType: StructureType = .PIPELINE_EXECUTABLE_INFO_KHR,
pNext: ?*const anyopaque = null,
pipeline: Pipeline,
executableIndex: u32,
};
pub const PipelineExecutableStatisticValueKHR = extern union {
b32: Bool32,
i64: i64,
u64: u64,
f64: f64,
};
pub const PipelineExecutableStatisticKHR = extern struct {
sType: StructureType = .PIPELINE_EXECUTABLE_STATISTIC_KHR,
pNext: ?*anyopaque = null,
name: [MAX_DESCRIPTION_SIZE-1:0]u8,
description: [MAX_DESCRIPTION_SIZE-1:0]u8,
format: PipelineExecutableStatisticFormatKHR,
value: PipelineExecutableStatisticValueKHR,
};
pub const PipelineExecutableInternalRepresentationKHR = extern struct {
sType: StructureType = .PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,
pNext: ?*anyopaque = null,
name: [MAX_DESCRIPTION_SIZE-1:0]u8,
description: [MAX_DESCRIPTION_SIZE-1:0]u8,
isText: Bool32,
dataSize: usize = 0,
pData: ?*anyopaque = null,
};
pub extern fn vkGetPipelineExecutablePropertiesKHR(
device: Device,
pPipelineInfo: *const PipelineInfoKHR,
pExecutableCount: *u32,
pProperties: ?[*]PipelineExecutablePropertiesKHR,
) callconv(CallConv) Result;
pub extern fn vkGetPipelineExecutableStatisticsKHR(
device: Device,
pExecutableInfo: *const PipelineExecutableInfoKHR,
pStatisticCount: *u32,
pStatistics: ?[*]PipelineExecutableStatisticKHR,
) callconv(CallConv) Result;
pub extern fn vkGetPipelineExecutableInternalRepresentationsKHR(
device: Device,
pExecutableInfo: *const PipelineExecutableInfoKHR,
pInternalRepresentationCount: *u32,
pInternalRepresentations: ?[*]PipelineExecutableInternalRepresentationKHR,
) callconv(CallConv) Result;
pub const GetPipelineExecutablePropertiesKHRResult = struct {
result: Result,
properties: []PipelineExecutablePropertiesKHR,
};
pub inline fn GetPipelineExecutablePropertiesKHR(device: Device, pipelineInfo: PipelineInfoKHR, properties: []PipelineExecutablePropertiesKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetPipelineExecutablePropertiesKHRResult {
var returnValues: GetPipelineExecutablePropertiesKHRResult = undefined;
var executableCount: u32 = @intCast(u32, properties.len);
const result = vkGetPipelineExecutablePropertiesKHR(device, &pipelineInfo, &executableCount, properties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.properties = properties[0..executableCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPipelineExecutablePropertiesCountKHR(device: Device, pipelineInfo: PipelineInfoKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_executableCount: u32 = undefined;
const result = vkGetPipelineExecutablePropertiesKHR(device, &pipelineInfo, &out_executableCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_executableCount;
}
pub const GetPipelineExecutableStatisticsKHRResult = struct {
result: Result,
statistics: []PipelineExecutableStatisticKHR,
};
pub inline fn GetPipelineExecutableStatisticsKHR(device: Device, executableInfo: PipelineExecutableInfoKHR, statistics: []PipelineExecutableStatisticKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetPipelineExecutableStatisticsKHRResult {
var returnValues: GetPipelineExecutableStatisticsKHRResult = undefined;
var statisticCount: u32 = @intCast(u32, statistics.len);
const result = vkGetPipelineExecutableStatisticsKHR(device, &executableInfo, &statisticCount, statistics.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.statistics = statistics[0..statisticCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPipelineExecutableStatisticsCountKHR(device: Device, executableInfo: PipelineExecutableInfoKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_statisticCount: u32 = undefined;
const result = vkGetPipelineExecutableStatisticsKHR(device, &executableInfo, &out_statisticCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_statisticCount;
}
pub const GetPipelineExecutableInternalRepresentationsKHRResult = struct {
result: Result,
internalRepresentations: []PipelineExecutableInternalRepresentationKHR,
};
pub inline fn GetPipelineExecutableInternalRepresentationsKHR(device: Device, executableInfo: PipelineExecutableInfoKHR, internalRepresentations: []PipelineExecutableInternalRepresentationKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetPipelineExecutableInternalRepresentationsKHRResult {
var returnValues: GetPipelineExecutableInternalRepresentationsKHRResult = undefined;
var internalRepresentationCount: u32 = @intCast(u32, internalRepresentations.len);
const result = vkGetPipelineExecutableInternalRepresentationsKHR(device, &executableInfo, &internalRepresentationCount, internalRepresentations.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.internalRepresentations = internalRepresentations[0..internalRepresentationCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPipelineExecutableInternalRepresentationsCountKHR(device: Device, executableInfo: PipelineExecutableInfoKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_internalRepresentationCount: u32 = undefined;
const result = vkGetPipelineExecutableInternalRepresentationsKHR(device, &executableInfo, &out_internalRepresentationCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_internalRepresentationCount;
}
pub const EXT_debug_report = 1;
pub const DebugReportCallbackEXT = enum(u64) { Null = 0, _ };
pub const EXT_DEBUG_REPORT_SPEC_VERSION = 9;
pub const EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report";
pub const DebugReportObjectTypeEXT = enum(i32) {
UNKNOWN = 0,
INSTANCE = 1,
PHYSICAL_DEVICE = 2,
DEVICE = 3,
QUEUE = 4,
SEMAPHORE = 5,
COMMAND_BUFFER = 6,
FENCE = 7,
DEVICE_MEMORY = 8,
BUFFER = 9,
IMAGE = 10,
EVENT = 11,
QUERY_POOL = 12,
BUFFER_VIEW = 13,
IMAGE_VIEW = 14,
SHADER_MODULE = 15,
PIPELINE_CACHE = 16,
PIPELINE_LAYOUT = 17,
RENDER_PASS = 18,
PIPELINE = 19,
DESCRIPTOR_SET_LAYOUT = 20,
SAMPLER = 21,
DESCRIPTOR_POOL = 22,
DESCRIPTOR_SET = 23,
FRAMEBUFFER = 24,
COMMAND_POOL = 25,
SURFACE_KHR = 26,
SWAPCHAIN_KHR = 27,
DEBUG_REPORT_CALLBACK_EXT = 28,
DISPLAY_KHR = 29,
DISPLAY_MODE_KHR = 30,
OBJECT_TABLE_NVX = 31,
INDIRECT_COMMANDS_LAYOUT_NVX = 32,
VALIDATION_CACHE_EXT = 33,
SAMPLER_YCBCR_CONVERSION = 1000156000,
DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,
ACCELERATION_STRUCTURE_NV = 1000165000,
_,
const Self = @This();
pub const DEBUG_REPORT = Self.DEBUG_REPORT_CALLBACK_EXT;
pub const VALIDATION_CACHE = Self.VALIDATION_CACHE_EXT;
pub const DESCRIPTOR_UPDATE_TEMPLATE_KHR = Self.DESCRIPTOR_UPDATE_TEMPLATE;
pub const SAMPLER_YCBCR_CONVERSION_KHR = Self.SAMPLER_YCBCR_CONVERSION;
};
pub const DebugReportFlagsEXT = packed struct {
information: bool = false,
warning: bool = false,
performanceWarning: bool = false,
errorBit: bool = false,
debug: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const PFN_DebugReportCallbackEXT = fn (
DebugReportFlagsEXT.IntType,
DebugReportObjectTypeEXT,
u64,
usize,
i32,
?CString,
?CString,
?*anyopaque,
) callconv(CallConv) Bool32;
pub const DebugReportCallbackCreateInfoEXT = extern struct {
sType: StructureType = .DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
flags: DebugReportFlagsEXT align(4) = DebugReportFlagsEXT{},
pfnCallback: PFN_DebugReportCallbackEXT,
pUserData: ?*anyopaque = null,
};
pub extern fn vkCreateDebugReportCallbackEXT(
instance: Instance,
pCreateInfo: *const DebugReportCallbackCreateInfoEXT,
pAllocator: ?*const AllocationCallbacks,
pCallback: *DebugReportCallbackEXT,
) callconv(CallConv) Result;
pub extern fn vkDestroyDebugReportCallbackEXT(
instance: Instance,
callback: DebugReportCallbackEXT,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkDebugReportMessageEXT(
instance: Instance,
flags: DebugReportFlagsEXT.IntType,
objectType: DebugReportObjectTypeEXT,
object: u64,
location: usize,
messageCode: i32,
pLayerPrefix: CString,
pMessage: CString,
) callconv(CallConv) void;
pub inline fn CreateDebugReportCallbackEXT(instance: Instance, createInfo: DebugReportCallbackCreateInfoEXT, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!DebugReportCallbackEXT {
var out_callback: DebugReportCallbackEXT = undefined;
const result = vkCreateDebugReportCallbackEXT(instance, &createInfo, pAllocator, &out_callback);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_callback;
}
pub const DestroyDebugReportCallbackEXT = vkDestroyDebugReportCallbackEXT;
pub inline fn DebugReportMessageEXT(instance: Instance, flags: DebugReportFlagsEXT, objectType: DebugReportObjectTypeEXT, object: u64, location: usize, messageCode: i32, pLayerPrefix: CString, pMessage: CString) void {
vkDebugReportMessageEXT(instance, flags.toInt(), objectType, object, location, messageCode, pLayerPrefix, pMessage);
}
pub const NV_glsl_shader = 1;
pub const NV_GLSL_SHADER_SPEC_VERSION = 1;
pub const NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader";
pub const EXT_depth_range_unrestricted = 1;
pub const EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1;
pub const EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted";
pub const IMG_filter_cubic = 1;
pub const IMG_FILTER_CUBIC_SPEC_VERSION = 1;
pub const IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic";
pub const AMD_rasterization_order = 1;
pub const AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1;
pub const AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order";
pub const RasterizationOrderAMD = enum(i32) {
STRICT = 0,
RELAXED = 1,
_,
};
pub const PipelineRasterizationStateRasterizationOrderAMD = extern struct {
sType: StructureType = .PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
pNext: ?*const anyopaque = null,
rasterizationOrder: RasterizationOrderAMD,
};
pub const AMD_shader_trinary_minmax = 1;
pub const AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1;
pub const AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax";
pub const AMD_shader_explicit_vertex_parameter = 1;
pub const AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1;
pub const AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter";
pub const EXT_debug_marker = 1;
pub const EXT_DEBUG_MARKER_SPEC_VERSION = 4;
pub const EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker";
pub const DebugMarkerObjectNameInfoEXT = extern struct {
sType: StructureType = .DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
pNext: ?*const anyopaque = null,
objectType: DebugReportObjectTypeEXT,
object: u64,
pObjectName: CString,
};
pub const DebugMarkerObjectTagInfoEXT = extern struct {
sType: StructureType = .DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
pNext: ?*const anyopaque = null,
objectType: DebugReportObjectTypeEXT,
object: u64,
tagName: u64,
tagSize: usize,
pTag: ?*const anyopaque,
};
pub const DebugMarkerMarkerInfoEXT = extern struct {
sType: StructureType = .DEBUG_MARKER_MARKER_INFO_EXT,
pNext: ?*const anyopaque = null,
pMarkerName: CString,
color: [4]f32 = 0,
};
pub extern fn vkDebugMarkerSetObjectTagEXT(
device: Device,
pTagInfo: *const DebugMarkerObjectTagInfoEXT,
) callconv(CallConv) Result;
pub extern fn vkDebugMarkerSetObjectNameEXT(
device: Device,
pNameInfo: *const DebugMarkerObjectNameInfoEXT,
) callconv(CallConv) Result;
pub extern fn vkCmdDebugMarkerBeginEXT(
commandBuffer: CommandBuffer,
pMarkerInfo: *const DebugMarkerMarkerInfoEXT,
) callconv(CallConv) void;
pub extern fn vkCmdDebugMarkerEndEXT(commandBuffer: CommandBuffer) callconv(CallConv) void;
pub extern fn vkCmdDebugMarkerInsertEXT(
commandBuffer: CommandBuffer,
pMarkerInfo: *const DebugMarkerMarkerInfoEXT,
) callconv(CallConv) void;
pub inline fn DebugMarkerSetObjectTagEXT(device: Device, tagInfo: DebugMarkerObjectTagInfoEXT) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkDebugMarkerSetObjectTagEXT(device, &tagInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn DebugMarkerSetObjectNameEXT(device: Device, nameInfo: DebugMarkerObjectNameInfoEXT) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkDebugMarkerSetObjectNameEXT(device, &nameInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn CmdDebugMarkerBeginEXT(commandBuffer: CommandBuffer, markerInfo: DebugMarkerMarkerInfoEXT) void {
vkCmdDebugMarkerBeginEXT(commandBuffer, &markerInfo);
}
pub const CmdDebugMarkerEndEXT = vkCmdDebugMarkerEndEXT;
pub inline fn CmdDebugMarkerInsertEXT(commandBuffer: CommandBuffer, markerInfo: DebugMarkerMarkerInfoEXT) void {
vkCmdDebugMarkerInsertEXT(commandBuffer, &markerInfo);
}
pub const AMD_gcn_shader = 1;
pub const AMD_GCN_SHADER_SPEC_VERSION = 1;
pub const AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader";
pub const NV_dedicated_allocation = 1;
pub const NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1;
pub const NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation";
pub const DedicatedAllocationImageCreateInfoNV = extern struct {
sType: StructureType = .DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
dedicatedAllocation: Bool32,
};
pub const DedicatedAllocationBufferCreateInfoNV = extern struct {
sType: StructureType = .DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
dedicatedAllocation: Bool32,
};
pub const DedicatedAllocationMemoryAllocateInfoNV = extern struct {
sType: StructureType = .DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
pNext: ?*const anyopaque = null,
image: Image = Image.Null,
buffer: Buffer = Buffer.Null,
};
pub const EXT_transform_feedback = 1;
pub const EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1;
pub const EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback";
pub const PipelineRasterizationStateStreamCreateFlagsEXT = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PhysicalDeviceTransformFeedbackFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,
pNext: ?*anyopaque = null,
transformFeedback: Bool32,
geometryStreams: Bool32,
};
pub const PhysicalDeviceTransformFeedbackPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
maxTransformFeedbackStreams: u32,
maxTransformFeedbackBuffers: u32,
maxTransformFeedbackBufferSize: DeviceSize,
maxTransformFeedbackStreamDataSize: u32,
maxTransformFeedbackBufferDataSize: u32,
maxTransformFeedbackBufferDataStride: u32,
transformFeedbackQueries: Bool32,
transformFeedbackStreamsLinesTriangles: Bool32,
transformFeedbackRasterizationStreamSelect: Bool32,
transformFeedbackDraw: Bool32,
};
pub const PipelineRasterizationStateStreamCreateInfoEXT = extern struct {
sType: StructureType = .PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
flags: PipelineRasterizationStateStreamCreateFlagsEXT align(4) = PipelineRasterizationStateStreamCreateFlagsEXT{},
rasterizationStream: u32,
};
pub extern fn vkCmdBindTransformFeedbackBuffersEXT(
commandBuffer: CommandBuffer,
firstBinding: u32,
bindingCount: u32,
pBuffers: [*]const Buffer,
pOffsets: [*]const DeviceSize,
pSizes: ?[*]const DeviceSize,
) callconv(CallConv) void;
pub extern fn vkCmdBeginTransformFeedbackEXT(
commandBuffer: CommandBuffer,
firstCounterBuffer: u32,
counterBufferCount: u32,
pCounterBuffers: [*]const Buffer,
pCounterBufferOffsets: ?[*]const DeviceSize,
) callconv(CallConv) void;
pub extern fn vkCmdEndTransformFeedbackEXT(
commandBuffer: CommandBuffer,
firstCounterBuffer: u32,
counterBufferCount: u32,
pCounterBuffers: [*]const Buffer,
pCounterBufferOffsets: ?[*]const DeviceSize,
) callconv(CallConv) void;
pub extern fn vkCmdBeginQueryIndexedEXT(
commandBuffer: CommandBuffer,
queryPool: QueryPool,
query: u32,
flags: QueryControlFlags.IntType,
index: u32,
) callconv(CallConv) void;
pub extern fn vkCmdEndQueryIndexedEXT(
commandBuffer: CommandBuffer,
queryPool: QueryPool,
query: u32,
index: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDrawIndirectByteCountEXT(
commandBuffer: CommandBuffer,
instanceCount: u32,
firstInstance: u32,
counterBuffer: Buffer,
counterBufferOffset: DeviceSize,
counterOffset: u32,
vertexStride: u32,
) callconv(CallConv) void;
pub inline fn CmdBindTransformFeedbackBuffersEXT(commandBuffer: CommandBuffer, firstBinding: u32, buffers: []const Buffer, offsets: []const DeviceSize, sizes: []const DeviceSize) void {
assert(offsets.len >= buffers.len);
assert(sizes.len >= buffers.len);
vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, @intCast(u32, buffers.len), buffers.ptr, offsets.ptr, sizes.ptr);
}
pub inline fn CmdBeginTransformFeedbackEXT(commandBuffer: CommandBuffer, firstCounterBuffer: u32, counterBuffers: []const Buffer, counterBufferOffsets: []const DeviceSize) void {
assert(counterBufferOffsets.len >= counterBuffers.len);
vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, @intCast(u32, counterBuffers.len), counterBuffers.ptr, counterBufferOffsets.ptr);
}
pub inline fn CmdEndTransformFeedbackEXT(commandBuffer: CommandBuffer, firstCounterBuffer: u32, counterBuffers: []const Buffer, counterBufferOffsets: []const DeviceSize) void {
assert(counterBufferOffsets.len >= counterBuffers.len);
vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, @intCast(u32, counterBuffers.len), counterBuffers.ptr, counterBufferOffsets.ptr);
}
pub inline fn CmdBeginQueryIndexedEXT(commandBuffer: CommandBuffer, queryPool: QueryPool, query: u32, flags: QueryControlFlags, index: u32) void {
vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags.toInt(), index);
}
pub const CmdEndQueryIndexedEXT = vkCmdEndQueryIndexedEXT;
pub const CmdDrawIndirectByteCountEXT = vkCmdDrawIndirectByteCountEXT;
pub const NVX_image_view_handle = 1;
pub const NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 1;
pub const NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle";
pub const ImageViewHandleInfoNVX = extern struct {
sType: StructureType = .IMAGE_VIEW_HANDLE_INFO_NVX,
pNext: ?*const anyopaque = null,
imageView: ImageView,
descriptorType: DescriptorType,
sampler: Sampler = Sampler.Null,
};
pub extern fn vkGetImageViewHandleNVX(
device: Device,
pInfo: *const ImageViewHandleInfoNVX,
) callconv(CallConv) u32;
pub inline fn GetImageViewHandleNVX(device: Device, info: ImageViewHandleInfoNVX) u32 {
const result = vkGetImageViewHandleNVX(device, &info);
return result;
}
pub const AMD_draw_indirect_count = 1;
pub const AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2;
pub const AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count";
pub extern fn vkCmdDrawIndirectCountAMD(
commandBuffer: CommandBuffer,
buffer: Buffer,
offset: DeviceSize,
countBuffer: Buffer,
countBufferOffset: DeviceSize,
maxDrawCount: u32,
stride: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDrawIndexedIndirectCountAMD(
commandBuffer: CommandBuffer,
buffer: Buffer,
offset: DeviceSize,
countBuffer: Buffer,
countBufferOffset: DeviceSize,
maxDrawCount: u32,
stride: u32,
) callconv(CallConv) void;
pub const CmdDrawIndirectCountAMD = vkCmdDrawIndirectCountAMD;
pub const CmdDrawIndexedIndirectCountAMD = vkCmdDrawIndexedIndirectCountAMD;
pub const AMD_negative_viewport_height = 1;
pub const AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1;
pub const AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height";
pub const AMD_gpu_shader_half_float = 1;
pub const AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2;
pub const AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float";
pub const AMD_shader_ballot = 1;
pub const AMD_SHADER_BALLOT_SPEC_VERSION = 1;
pub const AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot";
pub const AMD_texture_gather_bias_lod = 1;
pub const AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1;
pub const AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod";
pub const TextureLODGatherFormatPropertiesAMD = extern struct {
sType: StructureType = .TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
pNext: ?*anyopaque = null,
supportsTextureGatherLODBiasAMD: Bool32,
};
pub const AMD_shader_info = 1;
pub const AMD_SHADER_INFO_SPEC_VERSION = 1;
pub const AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info";
pub const ShaderInfoTypeAMD = enum(i32) {
STATISTICS = 0,
BINARY = 1,
DISASSEMBLY = 2,
_,
};
pub const ShaderResourceUsageAMD = extern struct {
numUsedVgprs: u32,
numUsedSgprs: u32,
ldsSizePerLocalWorkGroup: u32,
ldsUsageSizeInBytes: usize,
scratchMemUsageInBytes: usize,
};
pub const ShaderStatisticsInfoAMD = extern struct {
shaderStageMask: ShaderStageFlags align(4),
resourceUsage: ShaderResourceUsageAMD,
numPhysicalVgprs: u32,
numPhysicalSgprs: u32,
numAvailableVgprs: u32,
numAvailableSgprs: u32,
computeWorkGroupSize: [3]u32,
};
pub extern fn vkGetShaderInfoAMD(
device: Device,
pipeline: Pipeline,
shaderStage: ShaderStageFlags.IntType,
infoType: ShaderInfoTypeAMD,
pInfoSize: *usize,
pInfo: ?*anyopaque,
) callconv(CallConv) Result;
pub const GetShaderInfoAMDResult = struct {
result: Result,
info: []u8,
};
pub inline fn GetShaderInfoAMD(device: Device, pipeline: Pipeline, shaderStage: ShaderStageFlags, infoType: ShaderInfoTypeAMD, info: []u8) error{VK_FEATURE_NOT_PRESENT,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!GetShaderInfoAMDResult {
var returnValues: GetShaderInfoAMDResult = undefined;
var infoSize: usize = @intCast(usize, info.len);
const result = vkGetShaderInfoAMD(device, pipeline, shaderStage.toInt(), infoType, &infoSize, info.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_FEATURE_NOT_PRESENT => error.VK_FEATURE_NOT_PRESENT,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.info = info[0..infoSize];
returnValues.result = result;
return returnValues;
}
pub inline fn GetShaderInfoCountAMD(device: Device, pipeline: Pipeline, shaderStage: ShaderStageFlags, infoType: ShaderInfoTypeAMD) error{VK_FEATURE_NOT_PRESENT,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!usize {
var out_infoSize: usize = undefined;
const result = vkGetShaderInfoAMD(device, pipeline, shaderStage.toInt(), infoType, &out_infoSize, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_FEATURE_NOT_PRESENT => error.VK_FEATURE_NOT_PRESENT,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_infoSize;
}
pub const AMD_shader_image_load_store_lod = 1;
pub const AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1;
pub const AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod";
pub const NV_corner_sampled_image = 1;
pub const NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2;
pub const NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image";
pub const PhysicalDeviceCornerSampledImageFeaturesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,
pNext: ?*anyopaque = null,
cornerSampledImage: Bool32,
};
pub const IMG_format_pvrtc = 1;
pub const IMG_FORMAT_PVRTC_SPEC_VERSION = 1;
pub const IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc";
pub const NV_external_memory_capabilities = 1;
pub const NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1;
pub const NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities";
pub const ExternalMemoryHandleTypeFlagsNV = packed struct {
opaqueWin32: bool = false,
opaqueWin32Kmt: bool = false,
d3D11Image: bool = false,
d3D11ImageKmt: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const ExternalMemoryFeatureFlagsNV = packed struct {
dedicatedOnly: bool = false,
exportable: bool = false,
importable: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const ExternalImageFormatPropertiesNV = extern struct {
imageFormatProperties: ImageFormatProperties,
externalMemoryFeatures: ExternalMemoryFeatureFlagsNV align(4) = ExternalMemoryFeatureFlagsNV{},
exportFromImportedHandleTypes: ExternalMemoryHandleTypeFlagsNV align(4) = ExternalMemoryHandleTypeFlagsNV{},
compatibleHandleTypes: ExternalMemoryHandleTypeFlagsNV align(4) = ExternalMemoryHandleTypeFlagsNV{},
};
pub extern fn vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
physicalDevice: PhysicalDevice,
format: Format,
inType: ImageType,
tiling: ImageTiling,
usage: ImageUsageFlags.IntType,
flags: ImageCreateFlags.IntType,
externalHandleType: ExternalMemoryHandleTypeFlagsNV.IntType,
pExternalImageFormatProperties: *ExternalImageFormatPropertiesNV,
) callconv(CallConv) Result;
pub inline fn GetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice: PhysicalDevice, format: Format, inType: ImageType, tiling: ImageTiling, usage: ImageUsageFlags, flags: ImageCreateFlags, externalHandleType: ExternalMemoryHandleTypeFlagsNV) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_FORMAT_NOT_SUPPORTED,VK_UNDOCUMENTED_ERROR}!ExternalImageFormatPropertiesNV {
var out_externalImageFormatProperties: ExternalImageFormatPropertiesNV = undefined;
const result = vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, inType, tiling, usage.toInt(), flags.toInt(), externalHandleType.toInt(), &out_externalImageFormatProperties);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_FORMAT_NOT_SUPPORTED => error.VK_FORMAT_NOT_SUPPORTED,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_externalImageFormatProperties;
}
pub const NV_external_memory = 1;
pub const NV_EXTERNAL_MEMORY_SPEC_VERSION = 1;
pub const NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory";
pub const ExternalMemoryImageCreateInfoNV = extern struct {
sType: StructureType = .EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
handleTypes: ExternalMemoryHandleTypeFlagsNV align(4) = ExternalMemoryHandleTypeFlagsNV{},
};
pub const ExportMemoryAllocateInfoNV = extern struct {
sType: StructureType = .EXPORT_MEMORY_ALLOCATE_INFO_NV,
pNext: ?*const anyopaque = null,
handleTypes: ExternalMemoryHandleTypeFlagsNV align(4) = ExternalMemoryHandleTypeFlagsNV{},
};
pub const EXT_validation_flags = 1;
pub const EXT_VALIDATION_FLAGS_SPEC_VERSION = 2;
pub const EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags";
pub const ValidationCheckEXT = enum(i32) {
ALL = 0,
SHADERS = 1,
_,
};
pub const ValidationFlagsEXT = extern struct {
sType: StructureType = .VALIDATION_FLAGS_EXT,
pNext: ?*const anyopaque = null,
disabledValidationCheckCount: u32,
pDisabledValidationChecks: [*]const ValidationCheckEXT,
};
pub const EXT_shader_subgroup_ballot = 1;
pub const EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1;
pub const EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot";
pub const EXT_shader_subgroup_vote = 1;
pub const EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1;
pub const EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote";
pub const EXT_texture_compression_astc_hdr = 1;
pub const EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1;
pub const EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr";
pub const PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT,
pNext: ?*anyopaque = null,
textureCompressionASTC_HDR: Bool32,
};
pub const EXT_astc_decode_mode = 1;
pub const EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1;
pub const EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode";
pub const ImageViewASTCDecodeModeEXT = extern struct {
sType: StructureType = .IMAGE_VIEW_ASTC_DECODE_MODE_EXT,
pNext: ?*const anyopaque = null,
decodeMode: Format,
};
pub const PhysicalDeviceASTCDecodeFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,
pNext: ?*anyopaque = null,
decodeModeSharedExponent: Bool32,
};
pub const EXT_conditional_rendering = 1;
pub const EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2;
pub const EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering";
pub const ConditionalRenderingFlagsEXT = packed struct {
inverted: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const ConditionalRenderingBeginInfoEXT = extern struct {
sType: StructureType = .CONDITIONAL_RENDERING_BEGIN_INFO_EXT,
pNext: ?*const anyopaque = null,
buffer: Buffer,
offset: DeviceSize,
flags: ConditionalRenderingFlagsEXT align(4) = ConditionalRenderingFlagsEXT{},
};
pub const PhysicalDeviceConditionalRenderingFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,
pNext: ?*anyopaque = null,
conditionalRendering: Bool32,
inheritedConditionalRendering: Bool32,
};
pub const CommandBufferInheritanceConditionalRenderingInfoEXT = extern struct {
sType: StructureType = .COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,
pNext: ?*const anyopaque = null,
conditionalRenderingEnable: Bool32,
};
pub extern fn vkCmdBeginConditionalRenderingEXT(
commandBuffer: CommandBuffer,
pConditionalRenderingBegin: *const ConditionalRenderingBeginInfoEXT,
) callconv(CallConv) void;
pub extern fn vkCmdEndConditionalRenderingEXT(commandBuffer: CommandBuffer) callconv(CallConv) void;
pub inline fn CmdBeginConditionalRenderingEXT(commandBuffer: CommandBuffer, conditionalRenderingBegin: ConditionalRenderingBeginInfoEXT) void {
vkCmdBeginConditionalRenderingEXT(commandBuffer, &conditionalRenderingBegin);
}
pub const CmdEndConditionalRenderingEXT = vkCmdEndConditionalRenderingEXT;
pub const NVX_device_generated_commands = 1;
pub const ObjectTableNVX = enum(u64) { Null = 0, _ };
pub const IndirectCommandsLayoutNVX = enum(u64) { Null = 0, _ };
pub const NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3;
pub const NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NVX_device_generated_commands";
pub const IndirectCommandsTokenTypeNVX = enum(i32) {
PIPELINE = 0,
DESCRIPTOR_SET = 1,
INDEX_BUFFER = 2,
VERTEX_BUFFER = 3,
PUSH_CONSTANT = 4,
DRAW_INDEXED = 5,
DRAW = 6,
DISPATCH = 7,
_,
};
pub const ObjectEntryTypeNVX = enum(i32) {
DESCRIPTOR_SET = 0,
PIPELINE = 1,
INDEX_BUFFER = 2,
VERTEX_BUFFER = 3,
PUSH_CONSTANT = 4,
_,
};
pub const IndirectCommandsLayoutUsageFlagsNVX = packed struct {
unorderedSequences: bool = false,
sparseSequences: bool = false,
emptyExecutions: bool = false,
indexedSequences: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const ObjectEntryUsageFlagsNVX = packed struct {
graphics: bool = false,
compute: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const DeviceGeneratedCommandsFeaturesNVX = extern struct {
sType: StructureType = .DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
pNext: ?*const anyopaque = null,
computeBindingPointSupport: Bool32,
};
pub const DeviceGeneratedCommandsLimitsNVX = extern struct {
sType: StructureType = .DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
pNext: ?*const anyopaque = null,
maxIndirectCommandsLayoutTokenCount: u32,
maxObjectEntryCounts: u32,
minSequenceCountBufferOffsetAlignment: u32,
minSequenceIndexBufferOffsetAlignment: u32,
minCommandsTokenBufferOffsetAlignment: u32,
};
pub const IndirectCommandsTokenNVX = extern struct {
tokenType: IndirectCommandsTokenTypeNVX,
buffer: Buffer,
offset: DeviceSize,
};
pub const IndirectCommandsLayoutTokenNVX = extern struct {
tokenType: IndirectCommandsTokenTypeNVX,
bindingUnit: u32,
dynamicCount: u32,
divisor: u32,
};
pub const IndirectCommandsLayoutCreateInfoNVX = extern struct {
sType: StructureType = .INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
pNext: ?*const anyopaque = null,
pipelineBindPoint: PipelineBindPoint,
flags: IndirectCommandsLayoutUsageFlagsNVX align(4),
tokenCount: u32,
pTokens: [*]const IndirectCommandsLayoutTokenNVX,
};
pub const CmdProcessCommandsInfoNVX = extern struct {
sType: StructureType = .CMD_PROCESS_COMMANDS_INFO_NVX,
pNext: ?*const anyopaque = null,
objectTable: ObjectTableNVX,
indirectCommandsLayout: IndirectCommandsLayoutNVX,
indirectCommandsTokenCount: u32,
pIndirectCommandsTokens: [*]const IndirectCommandsTokenNVX,
maxSequencesCount: u32,
targetCommandBuffer: CommandBuffer = CommandBuffer.Null,
sequencesCountBuffer: Buffer = Buffer.Null,
sequencesCountOffset: DeviceSize = 0,
sequencesIndexBuffer: Buffer = Buffer.Null,
sequencesIndexOffset: DeviceSize = 0,
};
pub const CmdReserveSpaceForCommandsInfoNVX = extern struct {
sType: StructureType = .CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
pNext: ?*const anyopaque = null,
objectTable: ObjectTableNVX,
indirectCommandsLayout: IndirectCommandsLayoutNVX,
maxSequencesCount: u32,
};
pub const ObjectTableCreateInfoNVX = extern struct {
sType: StructureType = .OBJECT_TABLE_CREATE_INFO_NVX,
pNext: ?*const anyopaque = null,
objectCount: u32,
pObjectEntryTypes: [*]const ObjectEntryTypeNVX,
pObjectEntryCounts: [*]const u32,
pObjectEntryUsageFlags: [*]align(4) const ObjectEntryUsageFlagsNVX,
maxUniformBuffersPerDescriptor: u32,
maxStorageBuffersPerDescriptor: u32,
maxStorageImagesPerDescriptor: u32,
maxSampledImagesPerDescriptor: u32,
maxPipelineLayouts: u32,
};
pub const ObjectTableEntryNVX = extern struct {
inType: ObjectEntryTypeNVX,
flags: ObjectEntryUsageFlagsNVX align(4),
};
pub const ObjectTablePipelineEntryNVX = extern struct {
inType: ObjectEntryTypeNVX,
flags: ObjectEntryUsageFlagsNVX align(4),
pipeline: Pipeline,
};
pub const ObjectTableDescriptorSetEntryNVX = extern struct {
inType: ObjectEntryTypeNVX,
flags: ObjectEntryUsageFlagsNVX align(4),
pipelineLayout: PipelineLayout,
descriptorSet: DescriptorSet,
};
pub const ObjectTableVertexBufferEntryNVX = extern struct {
inType: ObjectEntryTypeNVX,
flags: ObjectEntryUsageFlagsNVX align(4),
buffer: Buffer,
};
pub const ObjectTableIndexBufferEntryNVX = extern struct {
inType: ObjectEntryTypeNVX,
flags: ObjectEntryUsageFlagsNVX align(4),
buffer: Buffer,
indexType: IndexType,
};
pub const ObjectTablePushConstantEntryNVX = extern struct {
inType: ObjectEntryTypeNVX,
flags: ObjectEntryUsageFlagsNVX align(4),
pipelineLayout: PipelineLayout,
stageFlags: ShaderStageFlags align(4),
};
pub extern fn vkCmdProcessCommandsNVX(
commandBuffer: CommandBuffer,
pProcessCommandsInfo: *const CmdProcessCommandsInfoNVX,
) callconv(CallConv) void;
pub extern fn vkCmdReserveSpaceForCommandsNVX(
commandBuffer: CommandBuffer,
pReserveSpaceInfo: *const CmdReserveSpaceForCommandsInfoNVX,
) callconv(CallConv) void;
pub extern fn vkCreateIndirectCommandsLayoutNVX(
device: Device,
pCreateInfo: *const IndirectCommandsLayoutCreateInfoNVX,
pAllocator: ?*const AllocationCallbacks,
pIndirectCommandsLayout: *IndirectCommandsLayoutNVX,
) callconv(CallConv) Result;
pub extern fn vkDestroyIndirectCommandsLayoutNVX(
device: Device,
indirectCommandsLayout: IndirectCommandsLayoutNVX,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkCreateObjectTableNVX(
device: Device,
pCreateInfo: *const ObjectTableCreateInfoNVX,
pAllocator: ?*const AllocationCallbacks,
pObjectTable: *ObjectTableNVX,
) callconv(CallConv) Result;
pub extern fn vkDestroyObjectTableNVX(
device: Device,
objectTable: ObjectTableNVX,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkRegisterObjectsNVX(
device: Device,
objectTable: ObjectTableNVX,
objectCount: u32,
ppObjectTableEntries: [*]const*const ObjectTableEntryNVX,
pObjectIndices: [*]const u32,
) callconv(CallConv) Result;
pub extern fn vkUnregisterObjectsNVX(
device: Device,
objectTable: ObjectTableNVX,
objectCount: u32,
pObjectEntryTypes: [*]const ObjectEntryTypeNVX,
pObjectIndices: [*]const u32,
) callconv(CallConv) Result;
pub extern fn vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
physicalDevice: PhysicalDevice,
pFeatures: *DeviceGeneratedCommandsFeaturesNVX,
pLimits: *DeviceGeneratedCommandsLimitsNVX,
) callconv(CallConv) void;
pub inline fn CmdProcessCommandsNVX(commandBuffer: CommandBuffer, processCommandsInfo: CmdProcessCommandsInfoNVX) void {
vkCmdProcessCommandsNVX(commandBuffer, &processCommandsInfo);
}
pub inline fn CmdReserveSpaceForCommandsNVX(commandBuffer: CommandBuffer, reserveSpaceInfo: CmdReserveSpaceForCommandsInfoNVX) void {
vkCmdReserveSpaceForCommandsNVX(commandBuffer, &reserveSpaceInfo);
}
pub inline fn CreateIndirectCommandsLayoutNVX(device: Device, createInfo: IndirectCommandsLayoutCreateInfoNVX, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!IndirectCommandsLayoutNVX {
var out_indirectCommandsLayout: IndirectCommandsLayoutNVX = undefined;
const result = vkCreateIndirectCommandsLayoutNVX(device, &createInfo, pAllocator, &out_indirectCommandsLayout);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_indirectCommandsLayout;
}
pub const DestroyIndirectCommandsLayoutNVX = vkDestroyIndirectCommandsLayoutNVX;
pub inline fn CreateObjectTableNVX(device: Device, createInfo: ObjectTableCreateInfoNVX, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!ObjectTableNVX {
var out_objectTable: ObjectTableNVX = undefined;
const result = vkCreateObjectTableNVX(device, &createInfo, pAllocator, &out_objectTable);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_objectTable;
}
pub const DestroyObjectTableNVX = vkDestroyObjectTableNVX;
pub inline fn RegisterObjectsNVX(device: Device, objectTable: ObjectTableNVX, pObjectTableEntries: []const*const ObjectTableEntryNVX, objectIndices: []const u32) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
assert(objectIndices.len >= pObjectTableEntries.len);
const result = vkRegisterObjectsNVX(device, objectTable, @intCast(u32, pObjectTableEntries.len), pObjectTableEntries.ptr, objectIndices.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn UnregisterObjectsNVX(device: Device, objectTable: ObjectTableNVX, objectEntryTypes: []const ObjectEntryTypeNVX, objectIndices: []const u32) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
assert(objectIndices.len >= objectEntryTypes.len);
const result = vkUnregisterObjectsNVX(device, objectTable, @intCast(u32, objectEntryTypes.len), objectEntryTypes.ptr, objectIndices.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub const GetPhysicalDeviceGeneratedCommandsPropertiesNVXResult = struct {
features: DeviceGeneratedCommandsFeaturesNVX,
limits: DeviceGeneratedCommandsLimitsNVX,
};
pub inline fn GetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice: PhysicalDevice) GetPhysicalDeviceGeneratedCommandsPropertiesNVXResult {
var returnValues: GetPhysicalDeviceGeneratedCommandsPropertiesNVXResult = undefined;
vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice, &returnValues.features, &returnValues.limits);
return returnValues;
}
pub const NV_clip_space_w_scaling = 1;
pub const NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1;
pub const NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling";
pub const ViewportWScalingNV = extern struct {
xcoeff: f32,
ycoeff: f32,
};
pub const PipelineViewportWScalingStateCreateInfoNV = extern struct {
sType: StructureType = .PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
viewportWScalingEnable: Bool32,
viewportCount: u32,
pViewportWScalings: ?[*]const ViewportWScalingNV = null,
};
pub extern fn vkCmdSetViewportWScalingNV(
commandBuffer: CommandBuffer,
firstViewport: u32,
viewportCount: u32,
pViewportWScalings: [*]const ViewportWScalingNV,
) callconv(CallConv) void;
pub inline fn CmdSetViewportWScalingNV(commandBuffer: CommandBuffer, firstViewport: u32, viewportWScalings: []const ViewportWScalingNV) void {
vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, @intCast(u32, viewportWScalings.len), viewportWScalings.ptr);
}
pub const EXT_direct_mode_display = 1;
pub const EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1;
pub const EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display";
pub extern fn vkReleaseDisplayEXT(
physicalDevice: PhysicalDevice,
display: DisplayKHR,
) callconv(CallConv) Result;
pub inline fn ReleaseDisplayEXT(physicalDevice: PhysicalDevice, display: DisplayKHR) error{VK_UNDOCUMENTED_ERROR}!void {
const result = vkReleaseDisplayEXT(physicalDevice, display);
if (@bitCast(c_int, result) < 0) {
return error.VK_UNDOCUMENTED_ERROR;
}
}
pub const EXT_display_surface_counter = 1;
pub const EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1;
pub const EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter";
pub const SurfaceCounterFlagsEXT = packed struct {
vblank: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const SurfaceCapabilities2EXT = extern struct {
sType: StructureType = .SURFACE_CAPABILITIES_2_EXT,
pNext: ?*anyopaque = null,
minImageCount: u32,
maxImageCount: u32,
currentExtent: Extent2D,
minImageExtent: Extent2D,
maxImageExtent: Extent2D,
maxImageArrayLayers: u32,
supportedTransforms: SurfaceTransformFlagsKHR align(4) = SurfaceTransformFlagsKHR{},
currentTransform: SurfaceTransformFlagsKHR align(4),
supportedCompositeAlpha: CompositeAlphaFlagsKHR align(4) = CompositeAlphaFlagsKHR{},
supportedUsageFlags: ImageUsageFlags align(4) = ImageUsageFlags{},
supportedSurfaceCounters: SurfaceCounterFlagsEXT align(4) = SurfaceCounterFlagsEXT{},
};
pub extern fn vkGetPhysicalDeviceSurfaceCapabilities2EXT(
physicalDevice: PhysicalDevice,
surface: SurfaceKHR,
pSurfaceCapabilities: *SurfaceCapabilities2EXT,
) callconv(CallConv) Result;
pub inline fn GetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice: PhysicalDevice, surface: SurfaceKHR) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!SurfaceCapabilities2EXT {
var out_surfaceCapabilities: SurfaceCapabilities2EXT = undefined;
const result = vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, &out_surfaceCapabilities);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_surfaceCapabilities;
}
pub const EXT_display_control = 1;
pub const EXT_DISPLAY_CONTROL_SPEC_VERSION = 1;
pub const EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control";
pub const DisplayPowerStateEXT = enum(i32) {
OFF = 0,
SUSPEND = 1,
ON = 2,
_,
};
pub const DeviceEventTypeEXT = enum(i32) {
DISPLAY_HOTPLUG = 0,
_,
};
pub const DisplayEventTypeEXT = enum(i32) {
FIRST_PIXEL_OUT = 0,
_,
};
pub const DisplayPowerInfoEXT = extern struct {
sType: StructureType = .DISPLAY_POWER_INFO_EXT,
pNext: ?*const anyopaque = null,
powerState: DisplayPowerStateEXT,
};
pub const DeviceEventInfoEXT = extern struct {
sType: StructureType = .DEVICE_EVENT_INFO_EXT,
pNext: ?*const anyopaque = null,
deviceEvent: DeviceEventTypeEXT,
};
pub const DisplayEventInfoEXT = extern struct {
sType: StructureType = .DISPLAY_EVENT_INFO_EXT,
pNext: ?*const anyopaque = null,
displayEvent: DisplayEventTypeEXT,
};
pub const SwapchainCounterCreateInfoEXT = extern struct {
sType: StructureType = .SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
surfaceCounters: SurfaceCounterFlagsEXT align(4) = SurfaceCounterFlagsEXT{},
};
pub extern fn vkDisplayPowerControlEXT(
device: Device,
display: DisplayKHR,
pDisplayPowerInfo: *const DisplayPowerInfoEXT,
) callconv(CallConv) Result;
pub extern fn vkRegisterDeviceEventEXT(
device: Device,
pDeviceEventInfo: *const DeviceEventInfoEXT,
pAllocator: ?*const AllocationCallbacks,
pFence: *Fence,
) callconv(CallConv) Result;
pub extern fn vkRegisterDisplayEventEXT(
device: Device,
display: DisplayKHR,
pDisplayEventInfo: *const DisplayEventInfoEXT,
pAllocator: ?*const AllocationCallbacks,
pFence: *Fence,
) callconv(CallConv) Result;
pub extern fn vkGetSwapchainCounterEXT(
device: Device,
swapchain: SwapchainKHR,
counter: SurfaceCounterFlagsEXT.IntType,
pCounterValue: *u64,
) callconv(CallConv) Result;
pub inline fn DisplayPowerControlEXT(device: Device, display: DisplayKHR, displayPowerInfo: DisplayPowerInfoEXT) error{VK_UNDOCUMENTED_ERROR}!void {
const result = vkDisplayPowerControlEXT(device, display, &displayPowerInfo);
if (@bitCast(c_int, result) < 0) {
return error.VK_UNDOCUMENTED_ERROR;
}
}
pub inline fn RegisterDeviceEventEXT(device: Device, deviceEventInfo: DeviceEventInfoEXT, pAllocator: ?*const AllocationCallbacks) error{VK_UNDOCUMENTED_ERROR}!Fence {
var out_fence: Fence = undefined;
const result = vkRegisterDeviceEventEXT(device, &deviceEventInfo, pAllocator, &out_fence);
if (@bitCast(c_int, result) < 0) {
return error.VK_UNDOCUMENTED_ERROR;
}
return out_fence;
}
pub inline fn RegisterDisplayEventEXT(device: Device, display: DisplayKHR, displayEventInfo: DisplayEventInfoEXT, pAllocator: ?*const AllocationCallbacks) error{VK_UNDOCUMENTED_ERROR}!Fence {
var out_fence: Fence = undefined;
const result = vkRegisterDisplayEventEXT(device, display, &displayEventInfo, pAllocator, &out_fence);
if (@bitCast(c_int, result) < 0) {
return error.VK_UNDOCUMENTED_ERROR;
}
return out_fence;
}
pub inline fn GetSwapchainCounterEXT(device: Device, swapchain: SwapchainKHR, counter: SurfaceCounterFlagsEXT) error{VK_DEVICE_LOST,VK_OUT_OF_DATE_KHR,VK_UNDOCUMENTED_ERROR}!u64 {
var out_counterValue: u64 = undefined;
const result = vkGetSwapchainCounterEXT(device, swapchain, counter.toInt(), &out_counterValue);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
.ERROR_OUT_OF_DATE_KHR => error.VK_OUT_OF_DATE_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_counterValue;
}
pub const GOOGLE_display_timing = 1;
pub const GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1;
pub const GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing";
pub const RefreshCycleDurationGOOGLE = extern struct {
refreshDuration: u64,
};
pub const PastPresentationTimingGOOGLE = extern struct {
presentID: u32,
desiredPresentTime: u64,
actualPresentTime: u64,
earliestPresentTime: u64,
presentMargin: u64,
};
pub const PresentTimeGOOGLE = extern struct {
presentID: u32,
desiredPresentTime: u64,
};
pub const PresentTimesInfoGOOGLE = extern struct {
sType: StructureType = .PRESENT_TIMES_INFO_GOOGLE,
pNext: ?*const anyopaque = null,
swapchainCount: u32,
pTimes: ?[*]const PresentTimeGOOGLE = null,
};
pub extern fn vkGetRefreshCycleDurationGOOGLE(
device: Device,
swapchain: SwapchainKHR,
pDisplayTimingProperties: *RefreshCycleDurationGOOGLE,
) callconv(CallConv) Result;
pub extern fn vkGetPastPresentationTimingGOOGLE(
device: Device,
swapchain: SwapchainKHR,
pPresentationTimingCount: *u32,
pPresentationTimings: ?[*]PastPresentationTimingGOOGLE,
) callconv(CallConv) Result;
pub inline fn GetRefreshCycleDurationGOOGLE(device: Device, swapchain: SwapchainKHR) error{VK_DEVICE_LOST,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!RefreshCycleDurationGOOGLE {
var out_displayTimingProperties: RefreshCycleDurationGOOGLE = undefined;
const result = vkGetRefreshCycleDurationGOOGLE(device, swapchain, &out_displayTimingProperties);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_displayTimingProperties;
}
pub const GetPastPresentationTimingGOOGLEResult = struct {
result: Result,
presentationTimings: []PastPresentationTimingGOOGLE,
};
pub inline fn GetPastPresentationTimingGOOGLE(device: Device, swapchain: SwapchainKHR, presentationTimings: []PastPresentationTimingGOOGLE) error{VK_DEVICE_LOST,VK_OUT_OF_DATE_KHR,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!GetPastPresentationTimingGOOGLEResult {
var returnValues: GetPastPresentationTimingGOOGLEResult = undefined;
var presentationTimingCount: u32 = @intCast(u32, presentationTimings.len);
const result = vkGetPastPresentationTimingGOOGLE(device, swapchain, &presentationTimingCount, presentationTimings.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
.ERROR_OUT_OF_DATE_KHR => error.VK_OUT_OF_DATE_KHR,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.presentationTimings = presentationTimings[0..presentationTimingCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPastPresentationTimingCountGOOGLE(device: Device, swapchain: SwapchainKHR) error{VK_DEVICE_LOST,VK_OUT_OF_DATE_KHR,VK_SURFACE_LOST_KHR,VK_UNDOCUMENTED_ERROR}!u32 {
var out_presentationTimingCount: u32 = undefined;
const result = vkGetPastPresentationTimingGOOGLE(device, swapchain, &out_presentationTimingCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_DEVICE_LOST => error.VK_DEVICE_LOST,
.ERROR_OUT_OF_DATE_KHR => error.VK_OUT_OF_DATE_KHR,
.ERROR_SURFACE_LOST_KHR => error.VK_SURFACE_LOST_KHR,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_presentationTimingCount;
}
pub const NV_sample_mask_override_coverage = 1;
pub const NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1;
pub const NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage";
pub const NV_geometry_shader_passthrough = 1;
pub const NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1;
pub const NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough";
pub const NV_viewport_array2 = 1;
pub const NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1;
pub const NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2";
pub const NVX_multiview_per_view_attributes = 1;
pub const NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1;
pub const NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes";
pub const PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
pNext: ?*anyopaque = null,
perViewPositionAllComponents: Bool32,
};
pub const NV_viewport_swizzle = 1;
pub const NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1;
pub const NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle";
pub const ViewportCoordinateSwizzleNV = enum(i32) {
POSITIVE_X = 0,
NEGATIVE_X = 1,
POSITIVE_Y = 2,
NEGATIVE_Y = 3,
POSITIVE_Z = 4,
NEGATIVE_Z = 5,
POSITIVE_W = 6,
NEGATIVE_W = 7,
_,
};
pub const PipelineViewportSwizzleStateCreateFlagsNV = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const ViewportSwizzleNV = extern struct {
x: ViewportCoordinateSwizzleNV,
y: ViewportCoordinateSwizzleNV,
z: ViewportCoordinateSwizzleNV,
w: ViewportCoordinateSwizzleNV,
};
pub const PipelineViewportSwizzleStateCreateInfoNV = extern struct {
sType: StructureType = .PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
flags: PipelineViewportSwizzleStateCreateFlagsNV align(4) = PipelineViewportSwizzleStateCreateFlagsNV{},
viewportCount: u32,
pViewportSwizzles: [*]const ViewportSwizzleNV,
};
pub const EXT_discard_rectangles = 1;
pub const EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1;
pub const EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles";
pub const DiscardRectangleModeEXT = enum(i32) {
INCLUSIVE = 0,
EXCLUSIVE = 1,
_,
};
pub const PipelineDiscardRectangleStateCreateFlagsEXT = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PhysicalDeviceDiscardRectanglePropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
maxDiscardRectangles: u32,
};
pub const PipelineDiscardRectangleStateCreateInfoEXT = extern struct {
sType: StructureType = .PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
flags: PipelineDiscardRectangleStateCreateFlagsEXT align(4) = PipelineDiscardRectangleStateCreateFlagsEXT{},
discardRectangleMode: DiscardRectangleModeEXT,
discardRectangleCount: u32 = 0,
pDiscardRectangles: ?[*]const Rect2D = null,
};
pub extern fn vkCmdSetDiscardRectangleEXT(
commandBuffer: CommandBuffer,
firstDiscardRectangle: u32,
discardRectangleCount: u32,
pDiscardRectangles: [*]const Rect2D,
) callconv(CallConv) void;
pub inline fn CmdSetDiscardRectangleEXT(commandBuffer: CommandBuffer, firstDiscardRectangle: u32, discardRectangles: []const Rect2D) void {
vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, @intCast(u32, discardRectangles.len), discardRectangles.ptr);
}
pub const EXT_conservative_rasterization = 1;
pub const EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1;
pub const EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization";
pub const ConservativeRasterizationModeEXT = enum(i32) {
DISABLED = 0,
OVERESTIMATE = 1,
UNDERESTIMATE = 2,
_,
};
pub const PipelineRasterizationConservativeStateCreateFlagsEXT = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PhysicalDeviceConservativeRasterizationPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
primitiveOverestimationSize: f32,
maxExtraPrimitiveOverestimationSize: f32,
extraPrimitiveOverestimationSizeGranularity: f32,
primitiveUnderestimation: Bool32,
conservativePointAndLineRasterization: Bool32,
degenerateTrianglesRasterized: Bool32,
degenerateLinesRasterized: Bool32,
fullyCoveredFragmentShaderInputVariable: Bool32,
conservativeRasterizationPostDepthCoverage: Bool32,
};
pub const PipelineRasterizationConservativeStateCreateInfoEXT = extern struct {
sType: StructureType = .PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
flags: PipelineRasterizationConservativeStateCreateFlagsEXT align(4) = PipelineRasterizationConservativeStateCreateFlagsEXT{},
conservativeRasterizationMode: ConservativeRasterizationModeEXT,
extraPrimitiveOverestimationSize: f32,
};
pub const EXT_depth_clip_enable = 1;
pub const EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1;
pub const EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable";
pub const PipelineRasterizationDepthClipStateCreateFlagsEXT = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PhysicalDeviceDepthClipEnableFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,
pNext: ?*anyopaque = null,
depthClipEnable: Bool32,
};
pub const PipelineRasterizationDepthClipStateCreateInfoEXT = extern struct {
sType: StructureType = .PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
flags: PipelineRasterizationDepthClipStateCreateFlagsEXT align(4) = PipelineRasterizationDepthClipStateCreateFlagsEXT{},
depthClipEnable: Bool32,
};
pub const EXT_swapchain_colorspace = 1;
pub const EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4;
pub const EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace";
pub const EXT_hdr_metadata = 1;
pub const EXT_HDR_METADATA_SPEC_VERSION = 2;
pub const EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata";
pub const XYColorEXT = extern struct {
x: f32,
y: f32,
};
pub const HdrMetadataEXT = extern struct {
sType: StructureType = .HDR_METADATA_EXT,
pNext: ?*const anyopaque = null,
displayPrimaryRed: XYColorEXT,
displayPrimaryGreen: XYColorEXT,
displayPrimaryBlue: XYColorEXT,
whitePoint: XYColorEXT,
maxLuminance: f32,
minLuminance: f32,
maxContentLightLevel: f32,
maxFrameAverageLightLevel: f32,
};
pub extern fn vkSetHdrMetadataEXT(
device: Device,
swapchainCount: u32,
pSwapchains: [*]const SwapchainKHR,
pMetadata: [*]const HdrMetadataEXT,
) callconv(CallConv) void;
pub inline fn SetHdrMetadataEXT(device: Device, swapchains: []const SwapchainKHR, metadata: []const HdrMetadataEXT) void {
assert(metadata.len >= swapchains.len);
vkSetHdrMetadataEXT(device, @intCast(u32, swapchains.len), swapchains.ptr, metadata.ptr);
}
pub const EXT_external_memory_dma_buf = 1;
pub const EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1;
pub const EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf";
pub const EXT_queue_family_foreign = 1;
pub const EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1;
pub const EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign";
pub const QUEUE_FAMILY_FOREIGN_EXT = (~@as(u32, 0)-2);
pub const EXT_debug_utils = 1;
pub const DebugUtilsMessengerEXT = enum(u64) { Null = 0, _ };
pub const EXT_DEBUG_UTILS_SPEC_VERSION = 1;
pub const EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils";
pub const DebugUtilsMessengerCallbackDataFlagsEXT = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const DebugUtilsMessengerCreateFlagsEXT = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const DebugUtilsMessageSeverityFlagsEXT = packed struct {
verbose: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
info: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
warning: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
errorBit: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const DebugUtilsMessageTypeFlagsEXT = packed struct {
general: bool = false,
validation: bool = false,
performance: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const DebugUtilsObjectNameInfoEXT = extern struct {
sType: StructureType = .DEBUG_UTILS_OBJECT_NAME_INFO_EXT,
pNext: ?*const anyopaque = null,
objectType: ObjectType,
objectHandle: u64,
pObjectName: ?CString = null,
};
pub const DebugUtilsObjectTagInfoEXT = extern struct {
sType: StructureType = .DEBUG_UTILS_OBJECT_TAG_INFO_EXT,
pNext: ?*const anyopaque = null,
objectType: ObjectType,
objectHandle: u64,
tagName: u64,
tagSize: usize,
pTag: ?*const anyopaque,
};
pub const DebugUtilsLabelEXT = extern struct {
sType: StructureType = .DEBUG_UTILS_LABEL_EXT,
pNext: ?*const anyopaque = null,
pLabelName: CString,
color: [4]f32 = 0,
};
pub const DebugUtilsMessengerCallbackDataEXT = extern struct {
sType: StructureType = .DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,
pNext: ?*const anyopaque = null,
flags: DebugUtilsMessengerCallbackDataFlagsEXT align(4) = DebugUtilsMessengerCallbackDataFlagsEXT{},
pMessageIdName: ?CString = null,
messageIdNumber: i32 = 0,
pMessage: CString,
queueLabelCount: u32 = 0,
pQueueLabels: [*]const DebugUtilsLabelEXT = undefined,
cmdBufLabelCount: u32 = 0,
pCmdBufLabels: [*]const DebugUtilsLabelEXT = undefined,
objectCount: u32 = 0,
pObjects: [*]const DebugUtilsObjectNameInfoEXT = undefined,
};
pub const PFN_DebugUtilsMessengerCallbackEXT = fn (
DebugUtilsMessageSeverityFlagsEXT.IntType,
DebugUtilsMessageTypeFlagsEXT.IntType,
?[*]const DebugUtilsMessengerCallbackDataEXT,
?*anyopaque,
) callconv(CallConv) Bool32;
pub const DebugUtilsMessengerCreateInfoEXT = extern struct {
sType: StructureType = .DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
flags: DebugUtilsMessengerCreateFlagsEXT align(4) = DebugUtilsMessengerCreateFlagsEXT{},
messageSeverity: DebugUtilsMessageSeverityFlagsEXT align(4),
messageType: DebugUtilsMessageTypeFlagsEXT align(4),
pfnUserCallback: PFN_DebugUtilsMessengerCallbackEXT,
pUserData: ?*anyopaque = null,
};
pub extern fn vkSetDebugUtilsObjectNameEXT(
device: Device,
pNameInfo: *const DebugUtilsObjectNameInfoEXT,
) callconv(CallConv) Result;
pub extern fn vkSetDebugUtilsObjectTagEXT(
device: Device,
pTagInfo: *const DebugUtilsObjectTagInfoEXT,
) callconv(CallConv) Result;
pub extern fn vkQueueBeginDebugUtilsLabelEXT(
queue: Queue,
pLabelInfo: *const DebugUtilsLabelEXT,
) callconv(CallConv) void;
pub extern fn vkQueueEndDebugUtilsLabelEXT(queue: Queue) callconv(CallConv) void;
pub extern fn vkQueueInsertDebugUtilsLabelEXT(
queue: Queue,
pLabelInfo: *const DebugUtilsLabelEXT,
) callconv(CallConv) void;
pub extern fn vkCmdBeginDebugUtilsLabelEXT(
commandBuffer: CommandBuffer,
pLabelInfo: *const DebugUtilsLabelEXT,
) callconv(CallConv) void;
pub extern fn vkCmdEndDebugUtilsLabelEXT(commandBuffer: CommandBuffer) callconv(CallConv) void;
pub extern fn vkCmdInsertDebugUtilsLabelEXT(
commandBuffer: CommandBuffer,
pLabelInfo: *const DebugUtilsLabelEXT,
) callconv(CallConv) void;
pub extern fn vkCreateDebugUtilsMessengerEXT(
instance: Instance,
pCreateInfo: *const DebugUtilsMessengerCreateInfoEXT,
pAllocator: ?*const AllocationCallbacks,
pMessenger: *DebugUtilsMessengerEXT,
) callconv(CallConv) Result;
pub extern fn vkDestroyDebugUtilsMessengerEXT(
instance: Instance,
messenger: DebugUtilsMessengerEXT,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkSubmitDebugUtilsMessageEXT(
instance: Instance,
messageSeverity: DebugUtilsMessageSeverityFlagsEXT.IntType,
messageTypes: DebugUtilsMessageTypeFlagsEXT.IntType,
pCallbackData: *const DebugUtilsMessengerCallbackDataEXT,
) callconv(CallConv) void;
pub inline fn SetDebugUtilsObjectNameEXT(device: Device, nameInfo: DebugUtilsObjectNameInfoEXT) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkSetDebugUtilsObjectNameEXT(device, &nameInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn SetDebugUtilsObjectTagEXT(device: Device, tagInfo: DebugUtilsObjectTagInfoEXT) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkSetDebugUtilsObjectTagEXT(device, &tagInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn QueueBeginDebugUtilsLabelEXT(queue: Queue, labelInfo: DebugUtilsLabelEXT) void {
vkQueueBeginDebugUtilsLabelEXT(queue, &labelInfo);
}
pub const QueueEndDebugUtilsLabelEXT = vkQueueEndDebugUtilsLabelEXT;
pub inline fn QueueInsertDebugUtilsLabelEXT(queue: Queue, labelInfo: DebugUtilsLabelEXT) void {
vkQueueInsertDebugUtilsLabelEXT(queue, &labelInfo);
}
pub inline fn CmdBeginDebugUtilsLabelEXT(commandBuffer: CommandBuffer, labelInfo: DebugUtilsLabelEXT) void {
vkCmdBeginDebugUtilsLabelEXT(commandBuffer, &labelInfo);
}
pub const CmdEndDebugUtilsLabelEXT = vkCmdEndDebugUtilsLabelEXT;
pub inline fn CmdInsertDebugUtilsLabelEXT(commandBuffer: CommandBuffer, labelInfo: DebugUtilsLabelEXT) void {
vkCmdInsertDebugUtilsLabelEXT(commandBuffer, &labelInfo);
}
pub inline fn CreateDebugUtilsMessengerEXT(instance: Instance, createInfo: DebugUtilsMessengerCreateInfoEXT, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!DebugUtilsMessengerEXT {
var out_messenger: DebugUtilsMessengerEXT = undefined;
const result = vkCreateDebugUtilsMessengerEXT(instance, &createInfo, pAllocator, &out_messenger);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_messenger;
}
pub const DestroyDebugUtilsMessengerEXT = vkDestroyDebugUtilsMessengerEXT;
pub inline fn SubmitDebugUtilsMessageEXT(instance: Instance, messageSeverity: DebugUtilsMessageSeverityFlagsEXT, messageTypes: DebugUtilsMessageTypeFlagsEXT, callbackData: DebugUtilsMessengerCallbackDataEXT) void {
vkSubmitDebugUtilsMessageEXT(instance, messageSeverity.toInt(), messageTypes.toInt(), &callbackData);
}
pub const EXT_sampler_filter_minmax = 1;
pub const EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2;
pub const EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax";
pub const SamplerReductionModeEXT = SamplerReductionMode;
pub const SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo;
pub const PhysicalDeviceSamplerFilterMinmaxPropertiesEXT = PhysicalDeviceSamplerFilterMinmaxProperties;
pub const AMD_gpu_shader_int16 = 1;
pub const AMD_GPU_SHADER_INT16_SPEC_VERSION = 2;
pub const AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16";
pub const AMD_mixed_attachment_samples = 1;
pub const AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1;
pub const AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples";
pub const AMD_shader_fragment_mask = 1;
pub const AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1;
pub const AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask";
pub const EXT_inline_uniform_block = 1;
pub const EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1;
pub const EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block";
pub const PhysicalDeviceInlineUniformBlockFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT,
pNext: ?*anyopaque = null,
inlineUniformBlock: Bool32,
descriptorBindingInlineUniformBlockUpdateAfterBind: Bool32,
};
pub const PhysicalDeviceInlineUniformBlockPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
maxInlineUniformBlockSize: u32,
maxPerStageDescriptorInlineUniformBlocks: u32,
maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks: u32,
maxDescriptorSetInlineUniformBlocks: u32,
maxDescriptorSetUpdateAfterBindInlineUniformBlocks: u32,
};
pub const WriteDescriptorSetInlineUniformBlockEXT = extern struct {
sType: StructureType = .WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT,
pNext: ?*const anyopaque = null,
dataSize: u32,
pData: ?*const anyopaque,
};
pub const DescriptorPoolInlineUniformBlockCreateInfoEXT = extern struct {
sType: StructureType = .DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
maxInlineUniformBlockBindings: u32,
};
pub const EXT_shader_stencil_export = 1;
pub const EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1;
pub const EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export";
pub const EXT_sample_locations = 1;
pub const EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1;
pub const EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations";
pub const SampleLocationEXT = extern struct {
x: f32,
y: f32,
};
pub const SampleLocationsInfoEXT = extern struct {
sType: StructureType = .SAMPLE_LOCATIONS_INFO_EXT,
pNext: ?*const anyopaque = null,
sampleLocationsPerPixel: SampleCountFlags align(4) = SampleCountFlags{},
sampleLocationGridSize: Extent2D,
sampleLocationsCount: u32 = 0,
pSampleLocations: [*]const SampleLocationEXT = undefined,
};
pub const AttachmentSampleLocationsEXT = extern struct {
attachmentIndex: u32,
sampleLocationsInfo: SampleLocationsInfoEXT,
};
pub const SubpassSampleLocationsEXT = extern struct {
subpassIndex: u32,
sampleLocationsInfo: SampleLocationsInfoEXT,
};
pub const RenderPassSampleLocationsBeginInfoEXT = extern struct {
sType: StructureType = .RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
pNext: ?*const anyopaque = null,
attachmentInitialSampleLocationsCount: u32 = 0,
pAttachmentInitialSampleLocations: [*]const AttachmentSampleLocationsEXT = undefined,
postSubpassSampleLocationsCount: u32 = 0,
pPostSubpassSampleLocations: [*]const SubpassSampleLocationsEXT = undefined,
};
pub const PipelineSampleLocationsStateCreateInfoEXT = extern struct {
sType: StructureType = .PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
sampleLocationsEnable: Bool32,
sampleLocationsInfo: SampleLocationsInfoEXT,
};
pub const PhysicalDeviceSampleLocationsPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
sampleLocationSampleCounts: SampleCountFlags align(4),
maxSampleLocationGridSize: Extent2D,
sampleLocationCoordinateRange: [2]f32,
sampleLocationSubPixelBits: u32,
variableSampleLocations: Bool32,
};
pub const MultisamplePropertiesEXT = extern struct {
sType: StructureType = .MULTISAMPLE_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
maxSampleLocationGridSize: Extent2D,
};
pub extern fn vkCmdSetSampleLocationsEXT(
commandBuffer: CommandBuffer,
pSampleLocationsInfo: *const SampleLocationsInfoEXT,
) callconv(CallConv) void;
pub extern fn vkGetPhysicalDeviceMultisamplePropertiesEXT(
physicalDevice: PhysicalDevice,
samples: SampleCountFlags.IntType,
pMultisampleProperties: *MultisamplePropertiesEXT,
) callconv(CallConv) void;
pub inline fn CmdSetSampleLocationsEXT(commandBuffer: CommandBuffer, sampleLocationsInfo: SampleLocationsInfoEXT) void {
vkCmdSetSampleLocationsEXT(commandBuffer, &sampleLocationsInfo);
}
pub inline fn GetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice: PhysicalDevice, samples: SampleCountFlags) MultisamplePropertiesEXT {
var out_multisampleProperties: MultisamplePropertiesEXT = undefined;
vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples.toInt(), &out_multisampleProperties);
return out_multisampleProperties;
}
pub const EXT_blend_operation_advanced = 1;
pub const EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2;
pub const EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced";
pub const BlendOverlapEXT = enum(i32) {
UNCORRELATED = 0,
DISJOINT = 1,
CONJOINT = 2,
_,
};
pub const PhysicalDeviceBlendOperationAdvancedFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
pNext: ?*anyopaque = null,
advancedBlendCoherentOperations: Bool32,
};
pub const PhysicalDeviceBlendOperationAdvancedPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
advancedBlendMaxColorAttachments: u32,
advancedBlendIndependentBlend: Bool32,
advancedBlendNonPremultipliedSrcColor: Bool32,
advancedBlendNonPremultipliedDstColor: Bool32,
advancedBlendCorrelatedOverlap: Bool32,
advancedBlendAllOperations: Bool32,
};
pub const PipelineColorBlendAdvancedStateCreateInfoEXT = extern struct {
sType: StructureType = .PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
srcPremultiplied: Bool32,
dstPremultiplied: Bool32,
blendOverlap: BlendOverlapEXT,
};
pub const NV_fragment_coverage_to_color = 1;
pub const NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1;
pub const NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color";
pub const PipelineCoverageToColorStateCreateFlagsNV = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineCoverageToColorStateCreateInfoNV = extern struct {
sType: StructureType = .PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
flags: PipelineCoverageToColorStateCreateFlagsNV align(4) = PipelineCoverageToColorStateCreateFlagsNV{},
coverageToColorEnable: Bool32,
coverageToColorLocation: u32 = 0,
};
pub const NV_framebuffer_mixed_samples = 1;
pub const NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1;
pub const NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples";
pub const CoverageModulationModeNV = enum(i32) {
NONE = 0,
RGB = 1,
ALPHA = 2,
RGBA = 3,
_,
};
pub const PipelineCoverageModulationStateCreateFlagsNV = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineCoverageModulationStateCreateInfoNV = extern struct {
sType: StructureType = .PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
flags: PipelineCoverageModulationStateCreateFlagsNV align(4) = PipelineCoverageModulationStateCreateFlagsNV{},
coverageModulationMode: CoverageModulationModeNV,
coverageModulationTableEnable: Bool32,
coverageModulationTableCount: u32 = 0,
pCoverageModulationTable: ?[*]const f32 = null,
};
pub const NV_fill_rectangle = 1;
pub const NV_FILL_RECTANGLE_SPEC_VERSION = 1;
pub const NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle";
pub const NV_shader_sm_builtins = 1;
pub const NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1;
pub const NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins";
pub const PhysicalDeviceShaderSMBuiltinsPropertiesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,
pNext: ?*anyopaque = null,
shaderSMCount: u32,
shaderWarpsPerSM: u32,
};
pub const PhysicalDeviceShaderSMBuiltinsFeaturesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,
pNext: ?*anyopaque = null,
shaderSMBuiltins: Bool32,
};
pub const EXT_post_depth_coverage = 1;
pub const EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1;
pub const EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage";
pub const EXT_image_drm_format_modifier = 1;
pub const EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1;
pub const EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier";
pub const DrmFormatModifierPropertiesEXT = extern struct {
drmFormatModifier: u64,
drmFormatModifierPlaneCount: u32,
drmFormatModifierTilingFeatures: FormatFeatureFlags align(4),
};
pub const DrmFormatModifierPropertiesListEXT = extern struct {
sType: StructureType = .DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,
pNext: ?*anyopaque = null,
drmFormatModifierCount: u32 = 0,
pDrmFormatModifierProperties: [*]DrmFormatModifierPropertiesEXT = undefined,
};
pub const PhysicalDeviceImageDrmFormatModifierInfoEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,
pNext: ?*const anyopaque = null,
drmFormatModifier: u64,
sharingMode: SharingMode,
queueFamilyIndexCount: u32 = 0,
pQueueFamilyIndices: [*]const u32 = undefined,
};
pub const ImageDrmFormatModifierListCreateInfoEXT = extern struct {
sType: StructureType = .IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
drmFormatModifierCount: u32,
pDrmFormatModifiers: [*]const u64,
};
pub const ImageDrmFormatModifierExplicitCreateInfoEXT = extern struct {
sType: StructureType = .IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
drmFormatModifier: u64,
drmFormatModifierPlaneCount: u32,
pPlaneLayouts: [*]const SubresourceLayout,
};
pub const ImageDrmFormatModifierPropertiesEXT = extern struct {
sType: StructureType = .IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
drmFormatModifier: u64,
};
pub extern fn vkGetImageDrmFormatModifierPropertiesEXT(
device: Device,
image: Image,
pProperties: *ImageDrmFormatModifierPropertiesEXT,
) callconv(CallConv) Result;
pub inline fn GetImageDrmFormatModifierPropertiesEXT(device: Device, image: Image) error{VK_UNDOCUMENTED_ERROR}!ImageDrmFormatModifierPropertiesEXT {
var out_properties: ImageDrmFormatModifierPropertiesEXT = undefined;
const result = vkGetImageDrmFormatModifierPropertiesEXT(device, image, &out_properties);
if (@bitCast(c_int, result) < 0) {
return error.VK_UNDOCUMENTED_ERROR;
}
return out_properties;
}
pub const EXT_validation_cache = 1;
pub const ValidationCacheEXT = enum(u64) { Null = 0, _ };
pub const EXT_VALIDATION_CACHE_SPEC_VERSION = 1;
pub const EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache";
pub const ValidationCacheHeaderVersionEXT = enum(i32) {
ONE = 1,
_,
};
pub const ValidationCacheCreateFlagsEXT = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const ValidationCacheCreateInfoEXT = extern struct {
sType: StructureType = .VALIDATION_CACHE_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
flags: ValidationCacheCreateFlagsEXT align(4) = ValidationCacheCreateFlagsEXT{},
initialDataSize: usize = 0,
pInitialData: ?*const anyopaque = undefined,
};
pub const ShaderModuleValidationCacheCreateInfoEXT = extern struct {
sType: StructureType = .SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
validationCache: ValidationCacheEXT,
};
pub extern fn vkCreateValidationCacheEXT(
device: Device,
pCreateInfo: *const ValidationCacheCreateInfoEXT,
pAllocator: ?*const AllocationCallbacks,
pValidationCache: *ValidationCacheEXT,
) callconv(CallConv) Result;
pub extern fn vkDestroyValidationCacheEXT(
device: Device,
validationCache: ValidationCacheEXT,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkMergeValidationCachesEXT(
device: Device,
dstCache: ValidationCacheEXT,
srcCacheCount: u32,
pSrcCaches: [*]const ValidationCacheEXT,
) callconv(CallConv) Result;
pub extern fn vkGetValidationCacheDataEXT(
device: Device,
validationCache: ValidationCacheEXT,
pDataSize: *usize,
pData: ?*anyopaque,
) callconv(CallConv) Result;
pub inline fn CreateValidationCacheEXT(device: Device, createInfo: ValidationCacheCreateInfoEXT, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!ValidationCacheEXT {
var out_validationCache: ValidationCacheEXT = undefined;
const result = vkCreateValidationCacheEXT(device, &createInfo, pAllocator, &out_validationCache);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_validationCache;
}
pub const DestroyValidationCacheEXT = vkDestroyValidationCacheEXT;
pub inline fn MergeValidationCachesEXT(device: Device, dstCache: ValidationCacheEXT, srcCaches: []const ValidationCacheEXT) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkMergeValidationCachesEXT(device, dstCache, @intCast(u32, srcCaches.len), srcCaches.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub const GetValidationCacheDataEXTResult = struct {
result: Result,
data: []u8,
};
pub inline fn GetValidationCacheDataEXT(device: Device, validationCache: ValidationCacheEXT, data: []u8) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetValidationCacheDataEXTResult {
var returnValues: GetValidationCacheDataEXTResult = undefined;
var dataSize: usize = @intCast(usize, data.len);
const result = vkGetValidationCacheDataEXT(device, validationCache, &dataSize, data.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.data = data[0..dataSize];
returnValues.result = result;
return returnValues;
}
pub inline fn GetValidationCacheDataCountEXT(device: Device, validationCache: ValidationCacheEXT) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!usize {
var out_dataSize: usize = undefined;
const result = vkGetValidationCacheDataEXT(device, validationCache, &out_dataSize, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_dataSize;
}
pub const EXT_descriptor_indexing = 1;
pub const EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2;
pub const EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing";
pub const DescriptorBindingFlagsEXT = DescriptorBindingFlags;
pub const DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo;
pub const PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures;
pub const PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties;
pub const DescriptorSetVariableDescriptorCountAllocateInfoEXT = DescriptorSetVariableDescriptorCountAllocateInfo;
pub const DescriptorSetVariableDescriptorCountLayoutSupportEXT = DescriptorSetVariableDescriptorCountLayoutSupport;
pub const EXT_shader_viewport_index_layer = 1;
pub const EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1;
pub const EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer";
pub const NV_shading_rate_image = 1;
pub const NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3;
pub const NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image";
pub const ShadingRatePaletteEntryNV = enum(i32) {
NO_INVOCATIONS = 0,
T_16_INVOCATIONS_PER_PIXEL = 1,
T_8_INVOCATIONS_PER_PIXEL = 2,
T_4_INVOCATIONS_PER_PIXEL = 3,
T_2_INVOCATIONS_PER_PIXEL = 4,
T_1_INVOCATION_PER_PIXEL = 5,
T_1_INVOCATION_PER_2X1_PIXELS = 6,
T_1_INVOCATION_PER_1X2_PIXELS = 7,
T_1_INVOCATION_PER_2X2_PIXELS = 8,
T_1_INVOCATION_PER_4X2_PIXELS = 9,
T_1_INVOCATION_PER_2X4_PIXELS = 10,
T_1_INVOCATION_PER_4X4_PIXELS = 11,
_,
};
pub const CoarseSampleOrderTypeNV = enum(i32) {
DEFAULT = 0,
CUSTOM = 1,
PIXEL_MAJOR = 2,
SAMPLE_MAJOR = 3,
_,
};
pub const ShadingRatePaletteNV = extern struct {
shadingRatePaletteEntryCount: u32,
pShadingRatePaletteEntries: [*]const ShadingRatePaletteEntryNV,
};
pub const PipelineViewportShadingRateImageStateCreateInfoNV = extern struct {
sType: StructureType = .PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
shadingRateImageEnable: Bool32,
viewportCount: u32 = 0,
pShadingRatePalettes: ?[*]const ShadingRatePaletteNV = null,
};
pub const PhysicalDeviceShadingRateImageFeaturesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,
pNext: ?*anyopaque = null,
shadingRateImage: Bool32,
shadingRateCoarseSampleOrder: Bool32,
};
pub const PhysicalDeviceShadingRateImagePropertiesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,
pNext: ?*anyopaque = null,
shadingRateTexelSize: Extent2D,
shadingRatePaletteSize: u32,
shadingRateMaxCoarseSamples: u32,
};
pub const CoarseSampleLocationNV = extern struct {
pixelX: u32,
pixelY: u32,
sample: u32,
};
pub const CoarseSampleOrderCustomNV = extern struct {
shadingRate: ShadingRatePaletteEntryNV,
sampleCount: u32,
sampleLocationCount: u32,
pSampleLocations: [*]const CoarseSampleLocationNV,
};
pub const PipelineViewportCoarseSampleOrderStateCreateInfoNV = extern struct {
sType: StructureType = .PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
sampleOrderType: CoarseSampleOrderTypeNV,
customSampleOrderCount: u32 = 0,
pCustomSampleOrders: [*]const CoarseSampleOrderCustomNV = undefined,
};
pub extern fn vkCmdBindShadingRateImageNV(
commandBuffer: CommandBuffer,
imageView: ImageView,
imageLayout: ImageLayout,
) callconv(CallConv) void;
pub extern fn vkCmdSetViewportShadingRatePaletteNV(
commandBuffer: CommandBuffer,
firstViewport: u32,
viewportCount: u32,
pShadingRatePalettes: [*]const ShadingRatePaletteNV,
) callconv(CallConv) void;
pub extern fn vkCmdSetCoarseSampleOrderNV(
commandBuffer: CommandBuffer,
sampleOrderType: CoarseSampleOrderTypeNV,
customSampleOrderCount: u32,
pCustomSampleOrders: [*]const CoarseSampleOrderCustomNV,
) callconv(CallConv) void;
pub const CmdBindShadingRateImageNV = vkCmdBindShadingRateImageNV;
pub inline fn CmdSetViewportShadingRatePaletteNV(commandBuffer: CommandBuffer, firstViewport: u32, shadingRatePalettes: []const ShadingRatePaletteNV) void {
vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, @intCast(u32, shadingRatePalettes.len), shadingRatePalettes.ptr);
}
pub inline fn CmdSetCoarseSampleOrderNV(commandBuffer: CommandBuffer, sampleOrderType: CoarseSampleOrderTypeNV, customSampleOrders: []const CoarseSampleOrderCustomNV) void {
vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, @intCast(u32, customSampleOrders.len), customSampleOrders.ptr);
}
pub const NV_ray_tracing = 1;
pub const AccelerationStructureNV = enum(u64) { Null = 0, _ };
pub const NV_RAY_TRACING_SPEC_VERSION = 3;
pub const NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing";
pub const SHADER_UNUSED_NV = (~@as(u32, 0));
pub const AccelerationStructureTypeNV = enum(i32) {
TOP_LEVEL = 0,
BOTTOM_LEVEL = 1,
_,
};
pub const RayTracingShaderGroupTypeNV = enum(i32) {
GENERAL = 0,
TRIANGLES_HIT_GROUP = 1,
PROCEDURAL_HIT_GROUP = 2,
_,
};
pub const GeometryTypeNV = enum(i32) {
TRIANGLES = 0,
AABBS = 1,
_,
};
pub const CopyAccelerationStructureModeNV = enum(i32) {
CLONE = 0,
COMPACT = 1,
_,
};
pub const AccelerationStructureMemoryRequirementsTypeNV = enum(i32) {
OBJECT = 0,
BUILD_SCRATCH = 1,
UPDATE_SCRATCH = 2,
_,
};
pub const GeometryFlagsNV = packed struct {
@"opaque": bool = false,
noDuplicateAnyHitInvocation: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const GeometryInstanceFlagsNV = packed struct {
triangleCullDisable: bool = false,
triangleFrontCounterclockwise: bool = false,
forceOpaque: bool = false,
forceNoOpaque: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const BuildAccelerationStructureFlagsNV = packed struct {
allowUpdate: bool = false,
allowCompaction: bool = false,
preferFastTrace: bool = false,
preferFastBuild: bool = false,
lowMemory: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const RayTracingShaderGroupCreateInfoNV = extern struct {
sType: StructureType = .RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
inType: RayTracingShaderGroupTypeNV,
generalShader: u32,
closestHitShader: u32,
anyHitShader: u32,
intersectionShader: u32,
};
pub const RayTracingPipelineCreateInfoNV = extern struct {
sType: StructureType = .RAY_TRACING_PIPELINE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
flags: PipelineCreateFlags align(4) = PipelineCreateFlags{},
stageCount: u32,
pStages: [*]const PipelineShaderStageCreateInfo,
groupCount: u32,
pGroups: [*]const RayTracingShaderGroupCreateInfoNV,
maxRecursionDepth: u32,
layout: PipelineLayout,
basePipelineHandle: Pipeline = Pipeline.Null,
basePipelineIndex: i32,
};
pub const GeometryTrianglesNV = extern struct {
sType: StructureType = .GEOMETRY_TRIANGLES_NV,
pNext: ?*const anyopaque = null,
vertexData: Buffer = Buffer.Null,
vertexOffset: DeviceSize,
vertexCount: u32,
vertexStride: DeviceSize,
vertexFormat: Format,
indexData: Buffer = Buffer.Null,
indexOffset: DeviceSize,
indexCount: u32,
indexType: IndexType,
transformData: Buffer = Buffer.Null,
transformOffset: DeviceSize,
};
pub const GeometryAABBNV = extern struct {
sType: StructureType = .GEOMETRY_AABB_NV,
pNext: ?*const anyopaque = null,
aabbData: Buffer = Buffer.Null,
numAABBs: u32,
stride: u32,
offset: DeviceSize,
};
pub const GeometryDataNV = extern struct {
triangles: GeometryTrianglesNV,
aabbs: GeometryAABBNV,
};
pub const GeometryNV = extern struct {
sType: StructureType = .GEOMETRY_NV,
pNext: ?*const anyopaque = null,
geometryType: GeometryTypeNV,
geometry: GeometryDataNV,
flags: GeometryFlagsNV align(4) = GeometryFlagsNV{},
};
pub const AccelerationStructureInfoNV = extern struct {
sType: StructureType = .ACCELERATION_STRUCTURE_INFO_NV,
pNext: ?*const anyopaque = null,
inType: AccelerationStructureTypeNV,
flags: BuildAccelerationStructureFlagsNV align(4) = BuildAccelerationStructureFlagsNV{},
instanceCount: u32 = 0,
geometryCount: u32 = 0,
pGeometries: [*]const GeometryNV = undefined,
};
pub const AccelerationStructureCreateInfoNV = extern struct {
sType: StructureType = .ACCELERATION_STRUCTURE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
compactedSize: DeviceSize,
info: AccelerationStructureInfoNV,
};
pub const BindAccelerationStructureMemoryInfoNV = extern struct {
sType: StructureType = .BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,
pNext: ?*const anyopaque = null,
accelerationStructure: AccelerationStructureNV,
memory: DeviceMemory,
memoryOffset: DeviceSize,
deviceIndexCount: u32 = 0,
pDeviceIndices: [*]const u32 = undefined,
};
pub const WriteDescriptorSetAccelerationStructureNV = extern struct {
sType: StructureType = .WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,
pNext: ?*const anyopaque = null,
accelerationStructureCount: u32,
pAccelerationStructures: [*]const AccelerationStructureNV,
};
pub const AccelerationStructureMemoryRequirementsInfoNV = extern struct {
sType: StructureType = .ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,
pNext: ?*const anyopaque = null,
inType: AccelerationStructureMemoryRequirementsTypeNV,
accelerationStructure: AccelerationStructureNV,
};
pub const PhysicalDeviceRayTracingPropertiesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,
pNext: ?*anyopaque = null,
shaderGroupHandleSize: u32,
maxRecursionDepth: u32,
maxShaderGroupStride: u32,
shaderGroupBaseAlignment: u32,
maxGeometryCount: u64,
maxInstanceCount: u64,
maxTriangleCount: u64,
maxDescriptorSetAccelerationStructures: u32,
};
pub extern fn vkCreateAccelerationStructureNV(
device: Device,
pCreateInfo: *const AccelerationStructureCreateInfoNV,
pAllocator: ?*const AllocationCallbacks,
pAccelerationStructure: *AccelerationStructureNV,
) callconv(CallConv) Result;
pub extern fn vkDestroyAccelerationStructureNV(
device: Device,
accelerationStructure: AccelerationStructureNV,
pAllocator: ?*const AllocationCallbacks,
) callconv(CallConv) void;
pub extern fn vkGetAccelerationStructureMemoryRequirementsNV(
device: Device,
pInfo: *const AccelerationStructureMemoryRequirementsInfoNV,
pMemoryRequirements: *MemoryRequirements2KHR,
) callconv(CallConv) void;
pub extern fn vkBindAccelerationStructureMemoryNV(
device: Device,
bindInfoCount: u32,
pBindInfos: [*]const BindAccelerationStructureMemoryInfoNV,
) callconv(CallConv) Result;
pub extern fn vkCmdBuildAccelerationStructureNV(
commandBuffer: CommandBuffer,
pInfo: *const AccelerationStructureInfoNV,
instanceData: Buffer,
instanceOffset: DeviceSize,
update: Bool32,
dst: AccelerationStructureNV,
src: AccelerationStructureNV,
scratch: Buffer,
scratchOffset: DeviceSize,
) callconv(CallConv) void;
pub extern fn vkCmdCopyAccelerationStructureNV(
commandBuffer: CommandBuffer,
dst: AccelerationStructureNV,
src: AccelerationStructureNV,
mode: CopyAccelerationStructureModeNV,
) callconv(CallConv) void;
pub extern fn vkCmdTraceRaysNV(
commandBuffer: CommandBuffer,
raygenShaderBindingTableBuffer: Buffer,
raygenShaderBindingOffset: DeviceSize,
missShaderBindingTableBuffer: Buffer,
missShaderBindingOffset: DeviceSize,
missShaderBindingStride: DeviceSize,
hitShaderBindingTableBuffer: Buffer,
hitShaderBindingOffset: DeviceSize,
hitShaderBindingStride: DeviceSize,
callableShaderBindingTableBuffer: Buffer,
callableShaderBindingOffset: DeviceSize,
callableShaderBindingStride: DeviceSize,
width: u32,
height: u32,
depth: u32,
) callconv(CallConv) void;
pub extern fn vkCreateRayTracingPipelinesNV(
device: Device,
pipelineCache: PipelineCache,
createInfoCount: u32,
pCreateInfos: [*]const RayTracingPipelineCreateInfoNV,
pAllocator: ?*const AllocationCallbacks,
pPipelines: [*]Pipeline,
) callconv(CallConv) Result;
pub extern fn vkGetRayTracingShaderGroupHandlesNV(
device: Device,
pipeline: Pipeline,
firstGroup: u32,
groupCount: u32,
dataSize: usize,
pData: ?*anyopaque,
) callconv(CallConv) Result;
pub extern fn vkGetAccelerationStructureHandleNV(
device: Device,
accelerationStructure: AccelerationStructureNV,
dataSize: usize,
pData: ?*anyopaque,
) callconv(CallConv) Result;
pub extern fn vkCmdWriteAccelerationStructuresPropertiesNV(
commandBuffer: CommandBuffer,
accelerationStructureCount: u32,
pAccelerationStructures: [*]const AccelerationStructureNV,
queryType: QueryType,
queryPool: QueryPool,
firstQuery: u32,
) callconv(CallConv) void;
pub extern fn vkCompileDeferredNV(
device: Device,
pipeline: Pipeline,
shader: u32,
) callconv(CallConv) Result;
pub inline fn CreateAccelerationStructureNV(device: Device, createInfo: AccelerationStructureCreateInfoNV, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!AccelerationStructureNV {
var out_accelerationStructure: AccelerationStructureNV = undefined;
const result = vkCreateAccelerationStructureNV(device, &createInfo, pAllocator, &out_accelerationStructure);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_accelerationStructure;
}
pub const DestroyAccelerationStructureNV = vkDestroyAccelerationStructureNV;
pub inline fn GetAccelerationStructureMemoryRequirementsNV(device: Device, info: AccelerationStructureMemoryRequirementsInfoNV) MemoryRequirements2KHR {
var out_memoryRequirements: MemoryRequirements2KHR = undefined;
vkGetAccelerationStructureMemoryRequirementsNV(device, &info, &out_memoryRequirements);
return out_memoryRequirements;
}
pub inline fn BindAccelerationStructureMemoryNV(device: Device, bindInfos: []const BindAccelerationStructureMemoryInfoNV) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkBindAccelerationStructureMemoryNV(device, @intCast(u32, bindInfos.len), bindInfos.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn CmdBuildAccelerationStructureNV(commandBuffer: CommandBuffer, info: AccelerationStructureInfoNV, instanceData: Buffer, instanceOffset: DeviceSize, update: Bool32, dst: AccelerationStructureNV, src: AccelerationStructureNV, scratch: Buffer, scratchOffset: DeviceSize) void {
vkCmdBuildAccelerationStructureNV(commandBuffer, &info, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset);
}
pub const CmdCopyAccelerationStructureNV = vkCmdCopyAccelerationStructureNV;
pub const CmdTraceRaysNV = vkCmdTraceRaysNV;
pub inline fn CreateRayTracingPipelinesNV(device: Device, pipelineCache: PipelineCache, createInfos: []const RayTracingPipelineCreateInfoNV, pAllocator: ?*const AllocationCallbacks, pipelines: []Pipeline) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_INVALID_SHADER_NV,VK_UNDOCUMENTED_ERROR}!void {
assert(pipelines.len >= createInfos.len);
const result = vkCreateRayTracingPipelinesNV(device, pipelineCache, @intCast(u32, createInfos.len), createInfos.ptr, pAllocator, pipelines.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
.ERROR_INVALID_SHADER_NV => error.VK_INVALID_SHADER_NV,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn GetRayTracingShaderGroupHandlesNV(device: Device, pipeline: Pipeline, firstGroup: u32, groupCount: u32, data: []u8) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, @intCast(usize, data.len), data.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn GetAccelerationStructureHandleNV(device: Device, accelerationStructure: AccelerationStructureNV, data: []u8) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkGetAccelerationStructureHandleNV(device, accelerationStructure, @intCast(usize, data.len), data.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn CmdWriteAccelerationStructuresPropertiesNV(commandBuffer: CommandBuffer, accelerationStructures: []const AccelerationStructureNV, queryType: QueryType, queryPool: QueryPool, firstQuery: u32) void {
vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, @intCast(u32, accelerationStructures.len), accelerationStructures.ptr, queryType, queryPool, firstQuery);
}
pub inline fn CompileDeferredNV(device: Device, pipeline: Pipeline, shader: u32) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkCompileDeferredNV(device, pipeline, shader);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub const NV_representative_fragment_test = 1;
pub const NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2;
pub const NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test";
pub const PhysicalDeviceRepresentativeFragmentTestFeaturesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,
pNext: ?*anyopaque = null,
representativeFragmentTest: Bool32,
};
pub const PipelineRepresentativeFragmentTestStateCreateInfoNV = extern struct {
sType: StructureType = .PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
representativeFragmentTestEnable: Bool32,
};
pub const EXT_filter_cubic = 1;
pub const EXT_FILTER_CUBIC_SPEC_VERSION = 3;
pub const EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic";
pub const PhysicalDeviceImageViewImageFormatInfoEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
pNext: ?*anyopaque = null,
imageViewType: ImageViewType,
};
pub const FilterCubicImageViewImageFormatPropertiesEXT = extern struct {
sType: StructureType = .FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
filterCubic: Bool32,
filterCubicMinmax: Bool32,
};
pub const EXT_global_priority = 1;
pub const EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2;
pub const EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority";
pub const QueueGlobalPriorityEXT = enum(i32) {
LOW = 128,
MEDIUM = 256,
HIGH = 512,
REALTIME = 1024,
_,
};
pub const DeviceQueueGlobalPriorityCreateInfoEXT = extern struct {
sType: StructureType = .DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
globalPriority: QueueGlobalPriorityEXT,
};
pub const EXT_external_memory_host = 1;
pub const EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1;
pub const EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host";
pub const ImportMemoryHostPointerInfoEXT = extern struct {
sType: StructureType = .IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
pNext: ?*const anyopaque = null,
handleType: ExternalMemoryHandleTypeFlags align(4),
pHostPointer: ?*anyopaque,
};
pub const MemoryHostPointerPropertiesEXT = extern struct {
sType: StructureType = .MEMORY_HOST_POINTER_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
memoryTypeBits: u32,
};
pub const PhysicalDeviceExternalMemoryHostPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
minImportedHostPointerAlignment: DeviceSize,
};
pub extern fn vkGetMemoryHostPointerPropertiesEXT(
device: Device,
handleType: ExternalMemoryHandleTypeFlags.IntType,
pHostPointer: ?*const anyopaque,
pMemoryHostPointerProperties: *MemoryHostPointerPropertiesEXT,
) callconv(CallConv) Result;
pub inline fn GetMemoryHostPointerPropertiesEXT(device: Device, handleType: ExternalMemoryHandleTypeFlags, pHostPointer: ?*const anyopaque) error{VK_INVALID_EXTERNAL_HANDLE,VK_UNDOCUMENTED_ERROR}!MemoryHostPointerPropertiesEXT {
var out_memoryHostPointerProperties: MemoryHostPointerPropertiesEXT = undefined;
const result = vkGetMemoryHostPointerPropertiesEXT(device, handleType.toInt(), pHostPointer, &out_memoryHostPointerProperties);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_INVALID_EXTERNAL_HANDLE => error.VK_INVALID_EXTERNAL_HANDLE,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_memoryHostPointerProperties;
}
pub const AMD_buffer_marker = 1;
pub const AMD_BUFFER_MARKER_SPEC_VERSION = 1;
pub const AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker";
pub extern fn vkCmdWriteBufferMarkerAMD(
commandBuffer: CommandBuffer,
pipelineStage: PipelineStageFlags.IntType,
dstBuffer: Buffer,
dstOffset: DeviceSize,
marker: u32,
) callconv(CallConv) void;
pub inline fn CmdWriteBufferMarkerAMD(commandBuffer: CommandBuffer, pipelineStage: PipelineStageFlags, dstBuffer: Buffer, dstOffset: DeviceSize, marker: u32) void {
vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage.toInt(), dstBuffer, dstOffset, marker);
}
pub const AMD_pipeline_compiler_control = 1;
pub const AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1;
pub const AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control";
pub const PipelineCompilerControlFlagsAMD = packed struct {
__reserved_bit_00: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineCompilerControlCreateInfoAMD = extern struct {
sType: StructureType = .PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,
pNext: ?*const anyopaque = null,
compilerControlFlags: PipelineCompilerControlFlagsAMD align(4) = PipelineCompilerControlFlagsAMD{},
};
pub const EXT_calibrated_timestamps = 1;
pub const EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1;
pub const EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps";
pub const TimeDomainEXT = enum(i32) {
DEVICE = 0,
CLOCK_MONOTONIC = 1,
CLOCK_MONOTONIC_RAW = 2,
QUERY_PERFORMANCE_COUNTER = 3,
_,
};
pub const CalibratedTimestampInfoEXT = extern struct {
sType: StructureType = .CALIBRATED_TIMESTAMP_INFO_EXT,
pNext: ?*const anyopaque = null,
timeDomain: TimeDomainEXT,
};
pub extern fn vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
physicalDevice: PhysicalDevice,
pTimeDomainCount: *u32,
pTimeDomains: ?[*]TimeDomainEXT,
) callconv(CallConv) Result;
pub extern fn vkGetCalibratedTimestampsEXT(
device: Device,
timestampCount: u32,
pTimestampInfos: [*]const CalibratedTimestampInfoEXT,
pTimestamps: [*]u64,
pMaxDeviation: *u64,
) callconv(CallConv) Result;
pub const GetPhysicalDeviceCalibrateableTimeDomainsEXTResult = struct {
result: Result,
timeDomains: []TimeDomainEXT,
};
pub inline fn GetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice: PhysicalDevice, timeDomains: []TimeDomainEXT) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetPhysicalDeviceCalibrateableTimeDomainsEXTResult {
var returnValues: GetPhysicalDeviceCalibrateableTimeDomainsEXTResult = undefined;
var timeDomainCount: u32 = @intCast(u32, timeDomains.len);
const result = vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, &timeDomainCount, timeDomains.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.timeDomains = timeDomains[0..timeDomainCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPhysicalDeviceCalibrateableTimeDomainsCountEXT(physicalDevice: PhysicalDevice) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_timeDomainCount: u32 = undefined;
const result = vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, &out_timeDomainCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_timeDomainCount;
}
pub inline fn GetCalibratedTimestampsEXT(device: Device, timestampInfos: []const CalibratedTimestampInfoEXT, timestamps: []u64) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u64 {
var out_maxDeviation: u64 = undefined;
assert(timestamps.len >= timestampInfos.len);
const result = vkGetCalibratedTimestampsEXT(device, @intCast(u32, timestampInfos.len), timestampInfos.ptr, timestamps.ptr, &out_maxDeviation);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_maxDeviation;
}
pub const AMD_shader_core_properties = 1;
pub const AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2;
pub const AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties";
pub const PhysicalDeviceShaderCorePropertiesAMD = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
pNext: ?*anyopaque = null,
shaderEngineCount: u32,
shaderArraysPerEngineCount: u32,
computeUnitsPerShaderArray: u32,
simdPerComputeUnit: u32,
wavefrontsPerSimd: u32,
wavefrontSize: u32,
sgprsPerSimd: u32,
minSgprAllocation: u32,
maxSgprAllocation: u32,
sgprAllocationGranularity: u32,
vgprsPerSimd: u32,
minVgprAllocation: u32,
maxVgprAllocation: u32,
vgprAllocationGranularity: u32,
};
pub const AMD_memory_overallocation_behavior = 1;
pub const AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1;
pub const AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior";
pub const MemoryOverallocationBehaviorAMD = enum(i32) {
DEFAULT = 0,
ALLOWED = 1,
DISALLOWED = 2,
_,
};
pub const DeviceMemoryOverallocationCreateInfoAMD = extern struct {
sType: StructureType = .DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,
pNext: ?*const anyopaque = null,
overallocationBehavior: MemoryOverallocationBehaviorAMD,
};
pub const EXT_vertex_attribute_divisor = 1;
pub const EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3;
pub const EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor";
pub const PhysicalDeviceVertexAttributeDivisorPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
maxVertexAttribDivisor: u32,
};
pub const VertexInputBindingDivisorDescriptionEXT = extern struct {
binding: u32,
divisor: u32,
};
pub const PipelineVertexInputDivisorStateCreateInfoEXT = extern struct {
sType: StructureType = .PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
vertexBindingDivisorCount: u32,
pVertexBindingDivisors: [*]const VertexInputBindingDivisorDescriptionEXT,
};
pub const PhysicalDeviceVertexAttributeDivisorFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT,
pNext: ?*anyopaque = null,
vertexAttributeInstanceRateDivisor: Bool32,
vertexAttributeInstanceRateZeroDivisor: Bool32,
};
pub const EXT_pipeline_creation_feedback = 1;
pub const EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1;
pub const EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback";
pub const PipelineCreationFeedbackFlagsEXT = packed struct {
valid: bool = false,
applicationPipelineCacheHit: bool = false,
basePipelineAcceleration: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const PipelineCreationFeedbackEXT = extern struct {
flags: PipelineCreationFeedbackFlagsEXT align(4),
duration: u64,
};
pub const PipelineCreationFeedbackCreateInfoEXT = extern struct {
sType: StructureType = .PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
pPipelineCreationFeedback: *PipelineCreationFeedbackEXT,
pipelineStageCreationFeedbackCount: u32,
pPipelineStageCreationFeedbacks: [*]PipelineCreationFeedbackEXT,
};
pub const NV_shader_subgroup_partitioned = 1;
pub const NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1;
pub const NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned";
pub const NV_compute_shader_derivatives = 1;
pub const NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1;
pub const NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives";
pub const PhysicalDeviceComputeShaderDerivativesFeaturesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV,
pNext: ?*anyopaque = null,
computeDerivativeGroupQuads: Bool32,
computeDerivativeGroupLinear: Bool32,
};
pub const NV_mesh_shader = 1;
pub const NV_MESH_SHADER_SPEC_VERSION = 1;
pub const NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader";
pub const PhysicalDeviceMeshShaderFeaturesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,
pNext: ?*anyopaque = null,
taskShader: Bool32,
meshShader: Bool32,
};
pub const PhysicalDeviceMeshShaderPropertiesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,
pNext: ?*anyopaque = null,
maxDrawMeshTasksCount: u32,
maxTaskWorkGroupInvocations: u32,
maxTaskWorkGroupSize: [3]u32,
maxTaskTotalMemorySize: u32,
maxTaskOutputCount: u32,
maxMeshWorkGroupInvocations: u32,
maxMeshWorkGroupSize: [3]u32,
maxMeshTotalMemorySize: u32,
maxMeshOutputVertices: u32,
maxMeshOutputPrimitives: u32,
maxMeshMultiviewViewCount: u32,
meshOutputPerVertexGranularity: u32,
meshOutputPerPrimitiveGranularity: u32,
};
pub const DrawMeshTasksIndirectCommandNV = extern struct {
taskCount: u32,
firstTask: u32,
};
pub extern fn vkCmdDrawMeshTasksNV(
commandBuffer: CommandBuffer,
taskCount: u32,
firstTask: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDrawMeshTasksIndirectNV(
commandBuffer: CommandBuffer,
buffer: Buffer,
offset: DeviceSize,
drawCount: u32,
stride: u32,
) callconv(CallConv) void;
pub extern fn vkCmdDrawMeshTasksIndirectCountNV(
commandBuffer: CommandBuffer,
buffer: Buffer,
offset: DeviceSize,
countBuffer: Buffer,
countBufferOffset: DeviceSize,
maxDrawCount: u32,
stride: u32,
) callconv(CallConv) void;
pub const CmdDrawMeshTasksNV = vkCmdDrawMeshTasksNV;
pub const CmdDrawMeshTasksIndirectNV = vkCmdDrawMeshTasksIndirectNV;
pub const CmdDrawMeshTasksIndirectCountNV = vkCmdDrawMeshTasksIndirectCountNV;
pub const NV_fragment_shader_barycentric = 1;
pub const NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1;
pub const NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric";
pub const PhysicalDeviceFragmentShaderBarycentricFeaturesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV,
pNext: ?*anyopaque = null,
fragmentShaderBarycentric: Bool32,
};
pub const NV_shader_image_footprint = 1;
pub const NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2;
pub const NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint";
pub const PhysicalDeviceShaderImageFootprintFeaturesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,
pNext: ?*anyopaque = null,
imageFootprint: Bool32,
};
pub const NV_scissor_exclusive = 1;
pub const NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1;
pub const NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive";
pub const PipelineViewportExclusiveScissorStateCreateInfoNV = extern struct {
sType: StructureType = .PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
exclusiveScissorCount: u32 = 0,
pExclusiveScissors: ?[*]const Rect2D = null,
};
pub const PhysicalDeviceExclusiveScissorFeaturesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,
pNext: ?*anyopaque = null,
exclusiveScissor: Bool32,
};
pub extern fn vkCmdSetExclusiveScissorNV(
commandBuffer: CommandBuffer,
firstExclusiveScissor: u32,
exclusiveScissorCount: u32,
pExclusiveScissors: [*]const Rect2D,
) callconv(CallConv) void;
pub inline fn CmdSetExclusiveScissorNV(commandBuffer: CommandBuffer, firstExclusiveScissor: u32, exclusiveScissors: []const Rect2D) void {
vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, @intCast(u32, exclusiveScissors.len), exclusiveScissors.ptr);
}
pub const NV_device_diagnostic_checkpoints = 1;
pub const NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2;
pub const NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints";
pub const QueueFamilyCheckpointPropertiesNV = extern struct {
sType: StructureType = .QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,
pNext: ?*anyopaque = null,
checkpointExecutionStageMask: PipelineStageFlags align(4),
};
pub const CheckpointDataNV = extern struct {
sType: StructureType = .CHECKPOINT_DATA_NV,
pNext: ?*anyopaque = null,
stage: PipelineStageFlags align(4),
pCheckpointMarker: ?*anyopaque,
};
pub extern fn vkCmdSetCheckpointNV(
commandBuffer: CommandBuffer,
pCheckpointMarker: ?*const anyopaque,
) callconv(CallConv) void;
pub extern fn vkGetQueueCheckpointDataNV(
queue: Queue,
pCheckpointDataCount: *u32,
pCheckpointData: ?[*]CheckpointDataNV,
) callconv(CallConv) void;
pub const CmdSetCheckpointNV = vkCmdSetCheckpointNV;
pub inline fn GetQueueCheckpointDataNV(queue: Queue, checkpointData: []CheckpointDataNV) []CheckpointDataNV {
var out_checkpointData: []CheckpointDataNV = undefined;
var checkpointDataCount: u32 = @intCast(u32, checkpointData.len);
vkGetQueueCheckpointDataNV(queue, &checkpointDataCount, checkpointData.ptr);
out_checkpointData = checkpointData[0..checkpointDataCount];
return out_checkpointData;
}
pub inline fn GetQueueCheckpointDataCountNV(queue: Queue) u32 {
var out_checkpointDataCount: u32 = undefined;
vkGetQueueCheckpointDataNV(queue, &out_checkpointDataCount, null);
return out_checkpointDataCount;
}
pub const INTEL_shader_integer_functions2 = 1;
pub const INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1;
pub const INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2";
pub const PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,
pNext: ?*anyopaque = null,
shaderIntegerFunctions2: Bool32,
};
pub const INTEL_performance_query = 1;
pub const PerformanceConfigurationINTEL = enum(u64) { Null = 0, _ };
pub const INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 1;
pub const INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query";
pub const PerformanceConfigurationTypeINTEL = enum(i32) {
COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED = 0,
_,
};
pub const QueryPoolSamplingModeINTEL = enum(i32) {
MANUAL = 0,
_,
};
pub const PerformanceOverrideTypeINTEL = enum(i32) {
NULL_HARDWARE = 0,
FLUSH_GPU_CACHES = 1,
_,
};
pub const PerformanceParameterTypeINTEL = enum(i32) {
HW_COUNTERS_SUPPORTED = 0,
STREAM_MARKER_VALID_BITS = 1,
_,
};
pub const PerformanceValueTypeINTEL = enum(i32) {
UINT32 = 0,
UINT64 = 1,
FLOAT = 2,
BOOL = 3,
STRING = 4,
_,
};
pub const PerformanceValueDataINTEL = extern union {
value32: u32,
value64: u64,
valueFloat: f32,
valueBool: Bool32,
valueString: *const u8,
};
pub const PerformanceValueINTEL = extern struct {
inType: PerformanceValueTypeINTEL,
data: PerformanceValueDataINTEL,
};
pub const InitializePerformanceApiInfoINTEL = extern struct {
sType: StructureType = .INITIALIZE_PERFORMANCE_API_INFO_INTEL,
pNext: ?*const anyopaque = null,
pUserData: ?*anyopaque,
};
pub const QueryPoolCreateInfoINTEL = extern struct {
sType: StructureType = .QUERY_POOL_CREATE_INFO_INTEL,
pNext: ?*const anyopaque = null,
performanceCountersSampling: QueryPoolSamplingModeINTEL,
};
pub const PerformanceMarkerInfoINTEL = extern struct {
sType: StructureType = .PERFORMANCE_MARKER_INFO_INTEL,
pNext: ?*const anyopaque = null,
marker: u64,
};
pub const PerformanceStreamMarkerInfoINTEL = extern struct {
sType: StructureType = .PERFORMANCE_STREAM_MARKER_INFO_INTEL,
pNext: ?*const anyopaque = null,
marker: u32,
};
pub const PerformanceOverrideInfoINTEL = extern struct {
sType: StructureType = .PERFORMANCE_OVERRIDE_INFO_INTEL,
pNext: ?*const anyopaque = null,
inType: PerformanceOverrideTypeINTEL,
enable: Bool32,
parameter: u64,
};
pub const PerformanceConfigurationAcquireInfoINTEL = extern struct {
sType: StructureType = .PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,
pNext: ?*const anyopaque = null,
inType: PerformanceConfigurationTypeINTEL,
};
pub extern fn vkInitializePerformanceApiINTEL(
device: Device,
pInitializeInfo: *const InitializePerformanceApiInfoINTEL,
) callconv(CallConv) Result;
pub extern fn vkUninitializePerformanceApiINTEL(device: Device) callconv(CallConv) void;
pub extern fn vkCmdSetPerformanceMarkerINTEL(
commandBuffer: CommandBuffer,
pMarkerInfo: *const PerformanceMarkerInfoINTEL,
) callconv(CallConv) Result;
pub extern fn vkCmdSetPerformanceStreamMarkerINTEL(
commandBuffer: CommandBuffer,
pMarkerInfo: *const PerformanceStreamMarkerInfoINTEL,
) callconv(CallConv) Result;
pub extern fn vkCmdSetPerformanceOverrideINTEL(
commandBuffer: CommandBuffer,
pOverrideInfo: *const PerformanceOverrideInfoINTEL,
) callconv(CallConv) Result;
pub extern fn vkAcquirePerformanceConfigurationINTEL(
device: Device,
pAcquireInfo: *const PerformanceConfigurationAcquireInfoINTEL,
pConfiguration: *PerformanceConfigurationINTEL,
) callconv(CallConv) Result;
pub extern fn vkReleasePerformanceConfigurationINTEL(
device: Device,
configuration: PerformanceConfigurationINTEL,
) callconv(CallConv) Result;
pub extern fn vkQueueSetPerformanceConfigurationINTEL(
queue: Queue,
configuration: PerformanceConfigurationINTEL,
) callconv(CallConv) Result;
pub extern fn vkGetPerformanceParameterINTEL(
device: Device,
parameter: PerformanceParameterTypeINTEL,
pValue: *PerformanceValueINTEL,
) callconv(CallConv) Result;
pub inline fn InitializePerformanceApiINTEL(device: Device, initializeInfo: InitializePerformanceApiInfoINTEL) error{VK_TOO_MANY_OBJECTS,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkInitializePerformanceApiINTEL(device, &initializeInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub const UninitializePerformanceApiINTEL = vkUninitializePerformanceApiINTEL;
pub inline fn CmdSetPerformanceMarkerINTEL(commandBuffer: CommandBuffer, markerInfo: PerformanceMarkerInfoINTEL) error{VK_TOO_MANY_OBJECTS,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkCmdSetPerformanceMarkerINTEL(commandBuffer, &markerInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn CmdSetPerformanceStreamMarkerINTEL(commandBuffer: CommandBuffer, markerInfo: PerformanceStreamMarkerInfoINTEL) error{VK_TOO_MANY_OBJECTS,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, &markerInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn CmdSetPerformanceOverrideINTEL(commandBuffer: CommandBuffer, overrideInfo: PerformanceOverrideInfoINTEL) error{VK_TOO_MANY_OBJECTS,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkCmdSetPerformanceOverrideINTEL(commandBuffer, &overrideInfo);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn AcquirePerformanceConfigurationINTEL(device: Device, acquireInfo: PerformanceConfigurationAcquireInfoINTEL) error{VK_TOO_MANY_OBJECTS,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!PerformanceConfigurationINTEL {
var out_configuration: PerformanceConfigurationINTEL = undefined;
const result = vkAcquirePerformanceConfigurationINTEL(device, &acquireInfo, &out_configuration);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_configuration;
}
pub inline fn ReleasePerformanceConfigurationINTEL(device: Device, configuration: PerformanceConfigurationINTEL) error{VK_TOO_MANY_OBJECTS,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkReleasePerformanceConfigurationINTEL(device, configuration);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn QueueSetPerformanceConfigurationINTEL(queue: Queue, configuration: PerformanceConfigurationINTEL) error{VK_TOO_MANY_OBJECTS,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!void {
const result = vkQueueSetPerformanceConfigurationINTEL(queue, configuration);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
}
pub inline fn GetPerformanceParameterINTEL(device: Device, parameter: PerformanceParameterTypeINTEL) error{VK_TOO_MANY_OBJECTS,VK_OUT_OF_HOST_MEMORY,VK_UNDOCUMENTED_ERROR}!PerformanceValueINTEL {
var out_value: PerformanceValueINTEL = undefined;
const result = vkGetPerformanceParameterINTEL(device, parameter, &out_value);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_TOO_MANY_OBJECTS => error.VK_TOO_MANY_OBJECTS,
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_value;
}
pub const EXT_pci_bus_info = 1;
pub const EXT_PCI_BUS_INFO_SPEC_VERSION = 2;
pub const EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info";
pub const PhysicalDevicePCIBusInfoPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
pciDomain: u32,
pciBus: u32,
pciDevice: u32,
pciFunction: u32,
};
pub const AMD_display_native_hdr = 1;
pub const AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1;
pub const AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr";
pub const DisplayNativeHdrSurfaceCapabilitiesAMD = extern struct {
sType: StructureType = .DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,
pNext: ?*anyopaque = null,
localDimmingSupport: Bool32,
};
pub const SwapchainDisplayNativeHdrCreateInfoAMD = extern struct {
sType: StructureType = .SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,
pNext: ?*const anyopaque = null,
localDimmingEnable: Bool32,
};
pub extern fn vkSetLocalDimmingAMD(
device: Device,
swapChain: SwapchainKHR,
localDimmingEnable: Bool32,
) callconv(CallConv) void;
pub const SetLocalDimmingAMD = vkSetLocalDimmingAMD;
pub const EXT_fragment_density_map = 1;
pub const EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1;
pub const EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map";
pub const PhysicalDeviceFragmentDensityMapFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,
pNext: ?*anyopaque = null,
fragmentDensityMap: Bool32,
fragmentDensityMapDynamic: Bool32,
fragmentDensityMapNonSubsampledImages: Bool32,
};
pub const PhysicalDeviceFragmentDensityMapPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
minFragmentDensityTexelSize: Extent2D,
maxFragmentDensityTexelSize: Extent2D,
fragmentDensityInvocations: Bool32,
};
pub const RenderPassFragmentDensityMapCreateInfoEXT = extern struct {
sType: StructureType = .RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
fragmentDensityMapAttachment: AttachmentReference,
};
pub const EXT_scalar_block_layout = 1;
pub const EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1;
pub const EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout";
pub const PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures;
pub const GOOGLE_hlsl_functionality1 = 1;
pub const GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1;
pub const GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1";
pub const GOOGLE_decorate_string = 1;
pub const GOOGLE_DECORATE_STRING_SPEC_VERSION = 1;
pub const GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string";
pub const EXT_subgroup_size_control = 1;
pub const EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2;
pub const EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control";
pub const PhysicalDeviceSubgroupSizeControlFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT,
pNext: ?*anyopaque = null,
subgroupSizeControl: Bool32,
computeFullSubgroups: Bool32,
};
pub const PhysicalDeviceSubgroupSizeControlPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
minSubgroupSize: u32,
maxSubgroupSize: u32,
maxComputeWorkgroupSubgroups: u32,
requiredSubgroupSizeStages: ShaderStageFlags align(4),
};
pub const PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = extern struct {
sType: StructureType = .PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT,
pNext: ?*anyopaque = null,
requiredSubgroupSize: u32,
};
pub const AMD_shader_core_properties2 = 1;
pub const AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1;
pub const AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2";
pub const ShaderCorePropertiesFlagsAMD = packed struct {
__reserved_bit_00: bool = false,
__reserved_bit_01: bool = false,
__reserved_bit_02: bool = false,
__reserved_bit_03: bool = false,
__reserved_bit_04: bool = false,
__reserved_bit_05: bool = false,
__reserved_bit_06: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const PhysicalDeviceShaderCoreProperties2AMD = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,
pNext: ?*anyopaque = null,
shaderCoreFeatures: ShaderCorePropertiesFlagsAMD align(4),
activeComputeUnitCount: u32,
};
pub const AMD_device_coherent_memory = 1;
pub const AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1;
pub const AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory";
pub const PhysicalDeviceCoherentMemoryFeaturesAMD = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,
pNext: ?*anyopaque = null,
deviceCoherentMemory: Bool32,
};
pub const EXT_memory_budget = 1;
pub const EXT_MEMORY_BUDGET_SPEC_VERSION = 1;
pub const EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget";
pub const PhysicalDeviceMemoryBudgetPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
heapBudget: [MAX_MEMORY_HEAPS]DeviceSize,
heapUsage: [MAX_MEMORY_HEAPS]DeviceSize,
};
pub const EXT_memory_priority = 1;
pub const EXT_MEMORY_PRIORITY_SPEC_VERSION = 1;
pub const EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority";
pub const PhysicalDeviceMemoryPriorityFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,
pNext: ?*anyopaque = null,
memoryPriority: Bool32,
};
pub const MemoryPriorityAllocateInfoEXT = extern struct {
sType: StructureType = .MEMORY_PRIORITY_ALLOCATE_INFO_EXT,
pNext: ?*const anyopaque = null,
priority: f32,
};
pub const NV_dedicated_allocation_image_aliasing = 1;
pub const NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1;
pub const NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing";
pub const PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,
pNext: ?*anyopaque = null,
dedicatedAllocationImageAliasing: Bool32,
};
pub const EXT_buffer_device_address = 1;
pub const EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2;
pub const EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address";
pub const PhysicalDeviceBufferDeviceAddressFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
pNext: ?*anyopaque = null,
bufferDeviceAddress: Bool32,
bufferDeviceAddressCaptureReplay: Bool32,
bufferDeviceAddressMultiDevice: Bool32,
};
pub const PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
pub const BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo;
pub const BufferDeviceAddressCreateInfoEXT = extern struct {
sType: StructureType = .BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
deviceAddress: DeviceAddress,
};
pub extern fn vkGetBufferDeviceAddressEXT(
device: Device,
pInfo: *const BufferDeviceAddressInfo,
) callconv(CallConv) DeviceAddress;
pub inline fn GetBufferDeviceAddressEXT(device: Device, info: BufferDeviceAddressInfo) DeviceAddress {
const result = vkGetBufferDeviceAddressEXT(device, &info);
return result;
}
pub const EXT_tooling_info = 1;
pub const EXT_TOOLING_INFO_SPEC_VERSION = 1;
pub const EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info";
pub const ToolPurposeFlagsEXT = packed struct {
validation: bool = false,
profiling: bool = false,
tracing: bool = false,
additionalFeatures: bool = false,
modifyingFeatures: bool = false,
debugReporting: bool = false,
debugMarkers: bool = false,
__reserved_bit_07: bool = false,
__reserved_bit_08: bool = false,
__reserved_bit_09: bool = false,
__reserved_bit_10: bool = false,
__reserved_bit_11: bool = false,
__reserved_bit_12: bool = false,
__reserved_bit_13: bool = false,
__reserved_bit_14: bool = false,
__reserved_bit_15: bool = false,
__reserved_bit_16: bool = false,
__reserved_bit_17: bool = false,
__reserved_bit_18: bool = false,
__reserved_bit_19: bool = false,
__reserved_bit_20: bool = false,
__reserved_bit_21: bool = false,
__reserved_bit_22: bool = false,
__reserved_bit_23: bool = false,
__reserved_bit_24: bool = false,
__reserved_bit_25: bool = false,
__reserved_bit_26: bool = false,
__reserved_bit_27: bool = false,
__reserved_bit_28: bool = false,
__reserved_bit_29: bool = false,
__reserved_bit_30: bool = false,
__reserved_bit_31: bool = false,
pub usingnamespace FlagsMixin(@This());
};
pub const PhysicalDeviceToolPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
name: [MAX_EXTENSION_NAME_SIZE-1:0]u8,
version: [MAX_EXTENSION_NAME_SIZE-1:0]u8,
purposes: ToolPurposeFlagsEXT align(4),
description: [MAX_DESCRIPTION_SIZE-1:0]u8,
layer: [MAX_EXTENSION_NAME_SIZE-1:0]u8,
};
pub extern fn vkGetPhysicalDeviceToolPropertiesEXT(
physicalDevice: PhysicalDevice,
pToolCount: *u32,
pToolProperties: ?[*]PhysicalDeviceToolPropertiesEXT,
) callconv(CallConv) Result;
pub const GetPhysicalDeviceToolPropertiesEXTResult = struct {
result: Result,
toolProperties: []PhysicalDeviceToolPropertiesEXT,
};
pub inline fn GetPhysicalDeviceToolPropertiesEXT(physicalDevice: PhysicalDevice, toolProperties: []PhysicalDeviceToolPropertiesEXT) error{VK_UNDOCUMENTED_ERROR}!GetPhysicalDeviceToolPropertiesEXTResult {
var returnValues: GetPhysicalDeviceToolPropertiesEXTResult = undefined;
var toolCount: u32 = @intCast(u32, toolProperties.len);
const result = vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, &toolCount, toolProperties.ptr);
if (@bitCast(c_int, result) < 0) {
return error.VK_UNDOCUMENTED_ERROR;
}
returnValues.toolProperties = toolProperties[0..toolCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPhysicalDeviceToolPropertiesCountEXT(physicalDevice: PhysicalDevice) error{VK_UNDOCUMENTED_ERROR}!u32 {
var out_toolCount: u32 = undefined;
const result = vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, &out_toolCount, null);
if (@bitCast(c_int, result) < 0) {
return error.VK_UNDOCUMENTED_ERROR;
}
return out_toolCount;
}
pub const EXT_separate_stencil_usage = 1;
pub const EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1;
pub const EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage";
pub const ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo;
pub const EXT_validation_features = 1;
pub const EXT_VALIDATION_FEATURES_SPEC_VERSION = 2;
pub const EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features";
pub const ValidationFeatureEnableEXT = enum(i32) {
GPU_ASSISTED = 0,
GPU_ASSISTED_RESERVE_BINDING_SLOT = 1,
BEST_PRACTICES = 2,
_,
};
pub const ValidationFeatureDisableEXT = enum(i32) {
ALL = 0,
SHADERS = 1,
THREAD_SAFETY = 2,
API_PARAMETERS = 3,
OBJECT_LIFETIMES = 4,
CORE_CHECKS = 5,
UNIQUE_HANDLES = 6,
_,
};
pub const ValidationFeaturesEXT = extern struct {
sType: StructureType = .VALIDATION_FEATURES_EXT,
pNext: ?*const anyopaque = null,
enabledValidationFeatureCount: u32 = 0,
pEnabledValidationFeatures: [*]const ValidationFeatureEnableEXT = undefined,
disabledValidationFeatureCount: u32 = 0,
pDisabledValidationFeatures: [*]const ValidationFeatureDisableEXT = undefined,
};
pub const NV_cooperative_matrix = 1;
pub const NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1;
pub const NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix";
pub const ComponentTypeNV = enum(i32) {
FLOAT16 = 0,
FLOAT32 = 1,
FLOAT64 = 2,
SINT8 = 3,
SINT16 = 4,
SINT32 = 5,
SINT64 = 6,
UINT8 = 7,
UINT16 = 8,
UINT32 = 9,
UINT64 = 10,
_,
};
pub const ScopeNV = enum(i32) {
DEVICE = 1,
WORKGROUP = 2,
SUBGROUP = 3,
QUEUE_FAMILY = 5,
_,
};
pub const CooperativeMatrixPropertiesNV = extern struct {
sType: StructureType = .COOPERATIVE_MATRIX_PROPERTIES_NV,
pNext: ?*anyopaque = null,
MSize: u32,
NSize: u32,
KSize: u32,
AType: ComponentTypeNV,
BType: ComponentTypeNV,
CType: ComponentTypeNV,
DType: ComponentTypeNV,
scope: ScopeNV,
};
pub const PhysicalDeviceCooperativeMatrixFeaturesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,
pNext: ?*anyopaque = null,
cooperativeMatrix: Bool32,
cooperativeMatrixRobustBufferAccess: Bool32,
};
pub const PhysicalDeviceCooperativeMatrixPropertiesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,
pNext: ?*anyopaque = null,
cooperativeMatrixSupportedStages: ShaderStageFlags align(4),
};
pub extern fn vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
physicalDevice: PhysicalDevice,
pPropertyCount: *u32,
pProperties: ?[*]CooperativeMatrixPropertiesNV,
) callconv(CallConv) Result;
pub const GetPhysicalDeviceCooperativeMatrixPropertiesNVResult = struct {
result: Result,
properties: []CooperativeMatrixPropertiesNV,
};
pub inline fn GetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice: PhysicalDevice, properties: []CooperativeMatrixPropertiesNV) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetPhysicalDeviceCooperativeMatrixPropertiesNVResult {
var returnValues: GetPhysicalDeviceCooperativeMatrixPropertiesNVResult = undefined;
var propertyCount: u32 = @intCast(u32, properties.len);
const result = vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, &propertyCount, properties.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.properties = properties[0..propertyCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPhysicalDeviceCooperativeMatrixPropertiesCountNV(physicalDevice: PhysicalDevice) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_propertyCount: u32 = undefined;
const result = vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, &out_propertyCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_propertyCount;
}
pub const NV_coverage_reduction_mode = 1;
pub const NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1;
pub const NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode";
pub const CoverageReductionModeNV = enum(i32) {
MERGE = 0,
TRUNCATE = 1,
_,
};
pub const PipelineCoverageReductionStateCreateFlagsNV = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const PhysicalDeviceCoverageReductionModeFeaturesNV = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,
pNext: ?*anyopaque = null,
coverageReductionMode: Bool32,
};
pub const PipelineCoverageReductionStateCreateInfoNV = extern struct {
sType: StructureType = .PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,
pNext: ?*const anyopaque = null,
flags: PipelineCoverageReductionStateCreateFlagsNV align(4) = PipelineCoverageReductionStateCreateFlagsNV{},
coverageReductionMode: CoverageReductionModeNV,
};
pub const FramebufferMixedSamplesCombinationNV = extern struct {
sType: StructureType = .FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,
pNext: ?*anyopaque = null,
coverageReductionMode: CoverageReductionModeNV,
rasterizationSamples: SampleCountFlags align(4),
depthStencilSamples: SampleCountFlags align(4),
colorSamples: SampleCountFlags align(4),
};
pub extern fn vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
physicalDevice: PhysicalDevice,
pCombinationCount: *u32,
pCombinations: ?[*]FramebufferMixedSamplesCombinationNV,
) callconv(CallConv) Result;
pub const GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNVResult = struct {
result: Result,
combinations: []FramebufferMixedSamplesCombinationNV,
};
pub inline fn GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice: PhysicalDevice, combinations: []FramebufferMixedSamplesCombinationNV) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNVResult {
var returnValues: GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNVResult = undefined;
var combinationCount: u32 = @intCast(u32, combinations.len);
const result = vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, &combinationCount, combinations.ptr);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
returnValues.combinations = combinations[0..combinationCount];
returnValues.result = result;
return returnValues;
}
pub inline fn GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsCountNV(physicalDevice: PhysicalDevice) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!u32 {
var out_combinationCount: u32 = undefined;
const result = vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, &out_combinationCount, null);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_combinationCount;
}
pub const EXT_fragment_shader_interlock = 1;
pub const EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1;
pub const EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock";
pub const PhysicalDeviceFragmentShaderInterlockFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,
pNext: ?*anyopaque = null,
fragmentShaderSampleInterlock: Bool32,
fragmentShaderPixelInterlock: Bool32,
fragmentShaderShadingRateInterlock: Bool32,
};
pub const EXT_ycbcr_image_arrays = 1;
pub const EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1;
pub const EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays";
pub const PhysicalDeviceYcbcrImageArraysFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,
pNext: ?*anyopaque = null,
ycbcrImageArrays: Bool32,
};
pub const EXT_headless_surface = 1;
pub const EXT_HEADLESS_SURFACE_SPEC_VERSION = 1;
pub const EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface";
pub const HeadlessSurfaceCreateFlagsEXT = packed struct {
__reserved_bits_00_31: u32 = 0,
pub usingnamespace FlagsMixin(@This());
};
pub const HeadlessSurfaceCreateInfoEXT = extern struct {
sType: StructureType = .HEADLESS_SURFACE_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
flags: HeadlessSurfaceCreateFlagsEXT align(4) = HeadlessSurfaceCreateFlagsEXT{},
};
pub extern fn vkCreateHeadlessSurfaceEXT(
instance: Instance,
pCreateInfo: *const HeadlessSurfaceCreateInfoEXT,
pAllocator: ?*const AllocationCallbacks,
pSurface: *SurfaceKHR,
) callconv(CallConv) Result;
pub inline fn CreateHeadlessSurfaceEXT(instance: Instance, createInfo: HeadlessSurfaceCreateInfoEXT, pAllocator: ?*const AllocationCallbacks) error{VK_OUT_OF_HOST_MEMORY,VK_OUT_OF_DEVICE_MEMORY,VK_UNDOCUMENTED_ERROR}!SurfaceKHR {
var out_surface: SurfaceKHR = undefined;
const result = vkCreateHeadlessSurfaceEXT(instance, &createInfo, pAllocator, &out_surface);
if (@bitCast(c_int, result) < 0) {
return switch (result) {
.ERROR_OUT_OF_HOST_MEMORY => error.VK_OUT_OF_HOST_MEMORY,
.ERROR_OUT_OF_DEVICE_MEMORY => error.VK_OUT_OF_DEVICE_MEMORY,
else => error.VK_UNDOCUMENTED_ERROR,
};
}
return out_surface;
}
pub const EXT_line_rasterization = 1;
pub const EXT_LINE_RASTERIZATION_SPEC_VERSION = 1;
pub const EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization";
pub const LineRasterizationModeEXT = enum(i32) {
DEFAULT = 0,
RECTANGULAR = 1,
BRESENHAM = 2,
RECTANGULAR_SMOOTH = 3,
_,
};
pub const PhysicalDeviceLineRasterizationFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT,
pNext: ?*anyopaque = null,
rectangularLines: Bool32,
bresenhamLines: Bool32,
smoothLines: Bool32,
stippledRectangularLines: Bool32,
stippledBresenhamLines: Bool32,
stippledSmoothLines: Bool32,
};
pub const PhysicalDeviceLineRasterizationPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
lineSubPixelPrecisionBits: u32,
};
pub const PipelineRasterizationLineStateCreateInfoEXT = extern struct {
sType: StructureType = .PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT,
pNext: ?*const anyopaque = null,
lineRasterizationMode: LineRasterizationModeEXT,
stippledLineEnable: Bool32,
lineStippleFactor: u32 = 0,
lineStipplePattern: u16 = 0,
};
pub extern fn vkCmdSetLineStippleEXT(
commandBuffer: CommandBuffer,
lineStippleFactor: u32,
lineStipplePattern: u16,
) callconv(CallConv) void;
pub const CmdSetLineStippleEXT = vkCmdSetLineStippleEXT;
pub const EXT_host_query_reset = 1;
pub const EXT_HOST_QUERY_RESET_SPEC_VERSION = 1;
pub const EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset";
pub const PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures;
pub extern fn vkResetQueryPoolEXT(
device: Device,
queryPool: QueryPool,
firstQuery: u32,
queryCount: u32,
) callconv(CallConv) void;
pub const ResetQueryPoolEXT = vkResetQueryPoolEXT;
pub const EXT_index_type_uint8 = 1;
pub const EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1;
pub const EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8";
pub const PhysicalDeviceIndexTypeUint8FeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT,
pNext: ?*anyopaque = null,
indexTypeUint8: Bool32,
};
pub const EXT_shader_demote_to_helper_invocation = 1;
pub const EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1;
pub const EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation";
pub const PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT,
pNext: ?*anyopaque = null,
shaderDemoteToHelperInvocation: Bool32,
};
pub const EXT_texel_buffer_alignment = 1;
pub const EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1;
pub const EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment";
pub const PhysicalDeviceTexelBufferAlignmentFeaturesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
pNext: ?*anyopaque = null,
texelBufferAlignment: Bool32,
};
pub const PhysicalDeviceTexelBufferAlignmentPropertiesEXT = extern struct {
sType: StructureType = .PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT,
pNext: ?*anyopaque = null,
storageTexelBufferOffsetAlignmentBytes: DeviceSize,
storageTexelBufferOffsetSingleTexelAlignment: Bool32,
uniformTexelBufferOffsetAlignmentBytes: DeviceSize,
uniformTexelBufferOffsetSingleTexelAlignment: Bool32,
};
pub const GOOGLE_user_type = 1;
pub const GOOGLE_USER_TYPE_SPEC_VERSION = 1;
pub const GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type";